From c21d2ac4393fba16ec4acd9ba637282073075294 Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Thu, 12 Sep 2024 11:20:32 +0800 Subject: [PATCH 1/8] /1 --- .../com/bweb/controller/TestController.java | 314 +----------------- .../controller/goods/GoodsController.java | 2 + .../com/order/controller/OrderController.java | 2 +- .../business/BsOrderGoodsController.java | 15 + .../com/hfkj/schedule/OrderGoodsSchedule.java | 43 ++- .../order/OrderRefundSuccessService.java | 5 +- .../order/impl/BsOrderServiceImpl.java | 37 ++- .../com/user/controller/BsUserController.java | 44 +++ 8 files changed, 138 insertions(+), 324 deletions(-) diff --git a/bweb/src/main/java/com/bweb/controller/TestController.java b/bweb/src/main/java/com/bweb/controller/TestController.java index 639d012..f75a5e5 100644 --- a/bweb/src/main/java/com/bweb/controller/TestController.java +++ b/bweb/src/main/java/com/bweb/controller/TestController.java @@ -1,42 +1,24 @@ package com.bweb.controller; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.PageInfo; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.*; -import com.hfkj.entity.*; -import com.hfkj.meituan.MeiTuanService; +import com.hfkj.config.CommonSysConst; + import com.hfkj.model.ResponseData; -import com.hfkj.model.goods.GoodsModel; -import com.hfkj.service.discount.CouponDiscountService; -import com.hfkj.service.goods.BsOrderGoodsService; -import com.hfkj.service.goods.GoodsMsgService; -import com.hfkj.service.goods.GoodsSpecsService; -import com.hfkj.service.goods.GoodsUserAddressService; -import com.hfkj.service.hlt.HltCanteenService; -import com.hfkj.service.hlt.HuiLianTongUnionCardService; -import com.hfkj.service.order.BsOrderChildService; -import com.hfkj.service.pay.huift.TradeService; -import com.hfkj.service.pay.huift.config.HuiftConfig; -import com.hfkj.sysenum.order.OrderLogisticsStatusEnum; + import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; + import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import java.math.BigDecimal; import java.util.*; -import java.util.stream.Collectors; + @Controller @RequestMapping(value="/test") @@ -44,205 +26,24 @@ import java.util.stream.Collectors; public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); - @Resource - private GoodsMsgService goodsMsgService; - - @Resource - private GoodsSpecsService goodsSpecsService; - - @Resource - private CouponDiscountService couponDiscountService; - - @Resource - private BsOrderChildService orderChildService; - @Resource - private BsOrderGoodsService orderGoodsService; - @Resource - private BsOrderGoodsService bsOrderGoodsService; - - @Resource - private GoodsUserAddressService addressService; - @Resource - private TradeService huiftTradeService; - @RequestMapping(value="/thirdPayResult",method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "查询V家园订单交易状态") - public ResponseData thirdPayResult(@RequestParam(value = "preOrderNo" , required = true) String preOrderNo, - @RequestParam(value = "shopCode" , required = true) String shopCode, - @RequestParam(value = "signSecret" , required = true) String signSecret) { - try { - - return ResponseMsgUtil.success(huiftTradeService.thirdPayResult(preOrderNo,shopCode,signSecret)); - - } catch (Exception e) { - log.error("error!",e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value="/canteenConsume",method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "食堂消费") - public ResponseData canteenConsume(@RequestParam(value = "cardNo" , required = false) String cardNo, - @RequestParam(value = "instCode" , required = false) String instCode, - @RequestParam(value = "canteenId" , required = false) String canteenId) { - try { - - String orderNo = OrderUtil.generateOrderNo(); - - JSONObject cardInfo = HltCanteenService.canteenConsume(orderNo , cardNo , instCode , canteenId); - if (StringUtils.isBlank(cardInfo.getString("data"))) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请求失败"); - } - return ResponseMsgUtil.success(HuiLianTongUnionCardService.resolveResponse(cardInfo.getString("data"))); - - } catch (Exception e) { - log.error("error!",e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value="/bindDiscountSpecs",method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "根据类型绑定") - public ResponseData bindDiscountSpecs(@RequestParam(value = "goodsType" , required = false) Integer goodsType , - @RequestParam(value = "discountId" , required = false) Long discountId) { - try { - - Map map = new HashMap<>(); - map.put("goodsType" , goodsType); - List goodsMsg = goodsMsgService.getList(map); - List specsList = goodsSpecsService.getList(map); - - List goodsRelList = new ArrayList<>(); - for (GoodsMsg goods : goodsMsg) { - List list = specsList.stream().filter(specs -> specs.getGoodsId().equals(goods.getId())). - collect(Collectors.toList()); - for (GoodsSpecs goodsSpecs : list) { - CouponDiscountGoodsRel goodsRel = new CouponDiscountGoodsRel(); - goodsRel.setDiscountId(discountId); - goodsRel.setSpecsId(goodsSpecs.getId()); - goodsRel.setCreateTime(new Date()); - goodsRel.setStatus(1); - goodsRelList.add(goodsRel); - - } - } - couponDiscountService.insertGoodsRelBatch(goodsRelList); - return ResponseMsgUtil.success("成功"); - - } catch (Exception e) { - log.error("error!",e); - return ResponseMsgUtil.exception(e); - } - } - @RequestMapping(value="/orderGoodsUpdate",method = RequestMethod.GET) + @RequestMapping(value="/haiOilLogin",method = RequestMethod.POST) @ResponseBody - @ApiOperation(value = "商品更新") - public ResponseData orderMsgUpdate() { + @ApiOperation(value = "嗨加油登陆参数") + public ResponseData haiOilLogin(@RequestBody JSONObject body) { try { - - Map map = new HashMap<>(); - - map.put("status", 1); - - List list = goodsMsgService.getList(map); - - List specsList = goodsSpecsService.getList(new HashMap<>()); - - - for (GoodsMsg goodsMsg : list) { - List goodsSpecsList = specsList.stream().filter(s -> s.getGoodsId().equals(goodsMsg.getId())).collect(Collectors.toList()); - if (!goodsSpecsList.isEmpty()) { - goodsMsg.setSaleNum(CommonUtil.saleNumRandom(goodsSpecsList.get(0).getSalePrice())); - } - goodsMsgService.update(goodsMsg); + if (body == null|| StringUtils.isBlank(body.getString("phone"))) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); } - return ResponseMsgUtil.success("成功"); - - } catch (Exception e) { - log.error("error!",e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value="/orderGoodsConfirmReceipt",method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "商品确认收货") - public ResponseData orderGoodsConfirmReceipt() { - try { - Map map = new HashMap<>(); + map.put("appid" , CommonSysConst.getSysConfig().getHaiOilAppid()); + map.put("phone" , body.getString("phone")); + map.put("sign" , SignatureUtil.createSign(map , CommonSysConst.getSysConfig().getHaiOilAppSecret())); - map.put("logisticsStatus" , "SIGN"); - map.put("status" , 2); - - List orderGoodsList = orderGoodsService.getList(map); - - for (BsOrderGoods goods : orderGoodsList) { - - // 判断时间是否是十天前 - - if (DateUtil.differentDays(goods.getCreateTime() , new Date()) > 9) { - bsOrderGoodsService.confirmReceipt(goods.getId()); - goods.setStatus(3); - goods.setUpdateTime(new Date()); - orderGoodsService.update(goods); - } - } - - return ResponseMsgUtil.success("成功"); - - } catch (Exception e) { - log.error("error!",e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value="/getLogisticsMsg",method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "查询物流") - public ResponseData getLogisticsMsg() { - try { - Map objectMap = new HashMap<>(); - - objectMap.put("status" , 2); - - List orderGoodsList = orderGoodsService.getList(objectMap); - - for (BsOrderGoods goods : orderGoodsList) { - - if (goods == null) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无物流信息!"); - } - - GoodsUserAddress userAddress = addressService.queryDetail(goods.getDeliveryAddressId()); - - if (userAddress == null) { - throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无物流信息!"); - } - if (goods.getLogisticsNo() != null) { - GoodsLogistics logistics = (GoodsLogistics) bsOrderGoodsService.getLogisticsMsg(goods.getLogisticsNo() , userAddress.getPhone()); - if (logistics.getLogisticsStatus() != null) { - goods.setLogisticsStatus(logistics.getLogisticsStatus()); - goods.setLogisticsStatusDesc(logistics.getLogisticsStatusDesc()); - } else { - goods.setLogisticsStatus(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getCode()); - goods.setLogisticsStatusDesc(OrderLogisticsStatusEnum.statusWAIT_ACCEPT.getName()); - } - - goods.setUpdateTime(new Date()); - - bsOrderGoodsService.update(goods); - } - - } - - return ResponseMsgUtil.success("map"); + return ResponseMsgUtil.success(map); } catch (Exception e) { log.error("error!",e); @@ -250,89 +51,4 @@ public class TestController { } } - - @RequestMapping(value = "/getHuiLianTongCardConsume", method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "查询汇联通工会卡消费记录") - public ResponseData getHuiLianTongCardConsume(@RequestParam(name = "businessType", required = true) String businessType, - @RequestParam(name = "cardNo", required = true) String cardNo) { - try { - - - JSONObject consumptionRecord = HuiLianTongUnionCardService.queryConsumptionRecordByBusiness(businessType, cardNo, 1661498490000L, 1882423290000L, 1, 10000); - if (StringUtils.isBlank(consumptionRecord.getString("data"))) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, ""); - } - - JSONArray array = HuiLianTongUnionCardService.resolveResponse(consumptionRecord.getString("data")).getJSONArray( - "records"); - - return ResponseMsgUtil.success(array); - - } catch (Exception e) { - log.error("HighUserCardController --> getHuiLianTongCardConsume() error!", e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value = "/queryTransJournal", method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "查询汇联通工会卡消费记录") - public ResponseData queryTransJournal(@RequestParam(name = "tranType", required = true) String tranType, - @RequestParam(name = "cardNo", required = true) String cardNo, - @RequestParam(value = "pageNum" , required = true) Integer pageNum, - @RequestParam(value = "pageSize" , required = true) Integer pageSize) { - try { - - - JSONObject consumptionRecord = HuiLianTongUnionCardService.queryTransJournal(cardNo , tranType); - if (StringUtils.isBlank(consumptionRecord.getString("data"))) { - throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, ""); - } - - JSONArray array = HuiLianTongUnionCardService.resolveResponse(consumptionRecord.getString("data")).getJSONArray( - "journals"); - - List list = new ArrayList<>(); - - for (Object object : array) { - JSONObject journal = (JSONObject) object; - journal.put("tranAmount", journal.getBigDecimal("tranAmount").divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP)); - list.add(journal); - } - - return ResponseMsgUtil.success(PageUtil.initPageInfoObj(pageNum, list.size(), pageSize, new PageInfo<>(list))); - - } catch (Exception e) { - log.error("HighUserCardController --> getHuiLianTongCardConsume() error!", e); - return ResponseMsgUtil.exception(e); - } - } - - @RequestMapping(value = "/loginFree", method = RequestMethod.GET) - @ResponseBody - @ApiOperation(value = "H5免登接口") - public ResponseData loginFree(@RequestParam(name = "staffPhone", required = true) String staffPhone, - @RequestParam(name = "productType", required = true) String productType) { - try { - - Map map = new HashMap<>(); - Map staffInfo = new HashMap<>(); - - staffInfo.put("staffPhone", staffPhone); - - map.put("staffInfo", staffInfo); - map.put("ts", new Date().getTime()); - map.put("entId", 104310L); - map.put("productType", productType); - map.put("nonce" , RandomStringGeneratorUtil.generateRandomString(36)); - return ResponseMsgUtil.success(MeiTuanService.loginFree(map)); - - } catch (Exception e) { - log.error("HighUserCardController --> getHuiLianTongCardConsume() error!", e); - return ResponseMsgUtil.exception(e); - } - } - - } diff --git a/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java b/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java index d89c2c2..0573255 100644 --- a/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java +++ b/cweb/src/main/java/com/cweb/controller/goods/GoodsController.java @@ -208,6 +208,8 @@ public class GoodsController { goodsModelSpecs.add(goodsModelSpec); } + goodsModelSpecs = goodsModelSpecs.stream().sorted(Comparator.comparing(GoodsModelSpecs::getSalePrice)).collect(Collectors.toList()); + goodsModel.setGoodsModelSpecs(goodsModelSpecs); return ResponseMsgUtil.success(goodsModel); diff --git a/order/src/main/java/com/order/controller/OrderController.java b/order/src/main/java/com/order/controller/OrderController.java index 2a8f010..fce04dc 100644 --- a/order/src/main/java/com/order/controller/OrderController.java +++ b/order/src/main/java/com/order/controller/OrderController.java @@ -326,7 +326,7 @@ public class OrderController { } Map map = new HashMap<>(); - map.put("appId" , CommonSysConst.getSysConfig().getHaiOilAppid()); + map.put("appid" , CommonSysConst.getSysConfig().getHaiOilAppid()); map.put("phone" , body.getString("phone")); map.put("sign" , SignatureUtil.createSign(map , CommonSysConst.getSysConfig().getHaiOilAppSecret())); diff --git a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java index 3a56f61..5888da5 100644 --- a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java +++ b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java @@ -20,6 +20,7 @@ import com.hfkj.model.order.orderExport.OrderGoodsExportModel; import com.hfkj.service.file.FileRecordsService; import com.hfkj.service.goods.BsOrderGoodsService; import com.hfkj.service.goods.GoodsUserAddressService; +import com.hfkj.service.order.BsOrderAfterSalesApplyService; import com.hfkj.service.order.BsOrderService; import com.hfkj.sysenum.SecUserObjectTypeEnum; import com.hfkj.sysenum.fileRecords.FileRecordsEnum; @@ -68,6 +69,9 @@ public class BsOrderGoodsController { @Resource private BsOrderGoodsService orderGoodsService; + @Resource + private BsOrderAfterSalesApplyService bsOrderAfterSalesApplyService; + @RequestMapping(value="/getListGoods",method = RequestMethod.GET) @ResponseBody @@ -296,10 +300,21 @@ public class BsOrderGoodsController { BsOrderGoods goodsOrder = bsOrderGoodsService.queryDetail(body.getId()); + + + + if (goodsOrder == null) { throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "信息错误!"); } + // 查询是否存在退货申请 + BsOrderAfterSalesApply afterSalesApply = bsOrderAfterSalesApplyService.getDetailByChildOrderNo(goodsOrder.getChildOrderNo()); + + if (afterSalesApply != null && afterSalesApply.getStatus().equals(OrderAfterSalesApplyStatusEnum.type1.getCode())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前订单存在退货申请,不可录入!"); + } + String logisticsNo = body.getLogisticsNo().replaceAll("\\s+", ""); goodsOrder.setLogisticsNo(logisticsNo); diff --git a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java index 3b68208..89ec8ed 100644 --- a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java +++ b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java @@ -1,15 +1,18 @@ package com.hfkj.schedule; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.DateUtil; -import com.hfkj.entity.BsOrderGoods; -import com.hfkj.entity.GoodsLogistics; -import com.hfkj.entity.GoodsUserAddress; +import com.hfkj.entity.*; +import com.hfkj.qianzhu.StarbucksService; import com.hfkj.service.goods.BsOrderGoodsService; +import com.hfkj.service.goods.BsOrderStarbucksService; import com.hfkj.service.goods.GoodsUserAddressService; +import com.hfkj.service.order.BsOrderChildService; +import com.hfkj.service.order.BsOrderService; import com.hfkj.sysenum.order.OrderLogisticsStatusEnum; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,6 +44,15 @@ public class OrderGoodsSchedule { @Resource private GoodsUserAddressService addressService; + @Resource + private BsOrderStarbucksService orderStarbucksService; + + @Resource + private BsOrderChildService orderChildService; + + @Resource + private BsOrderService orderService; + //每日凌晨12点5秒执行一次 @Scheduled(cron = "5 0 0 * * ?") public void orderGoodsConfirmReceipt() { @@ -98,4 +110,29 @@ public class OrderGoodsSchedule { } } + + @Scheduled(cron = "5 0 0 * * ?") + public void getStarbucks() { + Map objectMap = new HashMap<>(); + + objectMap.put("status" , 15); + + List orderStarbucks = orderStarbucksService.getList(objectMap); + + for (BsOrderStarbucks starbucks : orderStarbucks) { + + if (starbucks != null) { + // 查询星巴克订单详情 + BsOrderChild child = orderChildService.getDetail(starbucks.getChildOrderNo()); + Map orderMap = new HashMap<>(); + orderMap.put("orderNo" , child.getChannelOrderNo()); + + // 子订单完成 + orderService.childOrderComplete(starbucks.getChildOrderNo()); + + } + + + } + } } diff --git a/service/src/main/java/com/hfkj/service/order/OrderRefundSuccessService.java b/service/src/main/java/com/hfkj/service/order/OrderRefundSuccessService.java index 37a628a..ecae015 100644 --- a/service/src/main/java/com/hfkj/service/order/OrderRefundSuccessService.java +++ b/service/src/main/java/com/hfkj/service/order/OrderRefundSuccessService.java @@ -61,14 +61,11 @@ public class OrderRefundSuccessService { public void goods(BsOrderChild childOrder) { // 查询实物订单 - BsOrderGoods orderGoods = bsOrderGoodsService.findGoodsOrderByChild(childOrder.getOrderNo()); + BsOrderGoods orderGoods = bsOrderGoodsService.findGoodsOrderByChild(childOrder.getChildOrderNo()); try { if (orderGoods != null) { - Map map = new HashMap<>(); - map.put("orderNo", childOrder.getOrderNo()); - CinemaService.refundMovieOrder(map); orderGoods.setStatus(OrderChildStatusEnum.status4.getCode()); orderGoods.setLogisticsStatusDesc(null); orderGoods.setLogisticsNo(null); diff --git a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java index fe1f729..3b92d76 100644 --- a/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/order/impl/BsOrderServiceImpl.java @@ -15,6 +15,7 @@ import com.hfkj.model.order.OrderChildModel; import com.hfkj.model.order.OrderModel; import com.hfkj.mqtopic.OrderTopic; import com.hfkj.qianzhu.CinemaService; +import com.hfkj.qianzhu.StarbucksService; import com.hfkj.service.BsProductConfigService; import com.hfkj.service.discount.CouponDiscountService; import com.hfkj.service.discount.CouponDiscountUserRelService; @@ -522,28 +523,30 @@ public class BsOrderServiceImpl implements BsOrderService { orderModel.setBusiness(orderChild.getBusiness()); } - if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) { + if (orderChild.getProductType().equals(OrderChildProductTypeEnum.type3.getCode())) { - BsOrderCinema bsOrderCinema = bsOrderCinemaService.findGoodsOrder(orderNo); + BsOrderCinema bsOrderCinema = bsOrderCinemaService.findGoodsOrder(orderNo); - Map map = new HashMap<>(); - map.put("orderNo" , bsOrderCinema.getChannelOrderNo()); - JSONObject object = CinemaService.getByOrderNo(map); - if (object != null && object.getJSONObject("data") != null) { - orderModel.setBusiness(object.getJSONObject("data")); - bsOrderCinema.setUpdateTime(new Date()); - bsOrderCinema.setStatus(object.getJSONObject("data").getInteger("status")); - } + Map map = new HashMap<>(); + map.put("orderNo" , bsOrderCinema.getChannelOrderNo()); + JSONObject object = CinemaService.getByOrderNo(map); + if (object != null && object.getJSONObject("data") != null) { + orderModel.setBusiness(object.getJSONObject("data")); + bsOrderCinema.setUpdateTime(new Date()); + bsOrderCinema.setStatus(object.getJSONObject("data").getInteger("status")); + } + + orderModel.setBusinessOrder(bsOrderCinema); + + bsOrderCinemaService.update(bsOrderCinema); - orderModel.setBusinessOrder(bsOrderCinema); + if (bsOrderCinema.getStatus() == 10) { + // 子订单完成 + childOrderComplete(orderChild.getChildOrderNo()); + } + } - bsOrderCinemaService.update(bsOrderCinema); - if (bsOrderCinema.getStatus() == 10) { - // 子订单完成 - childOrderComplete(orderChild.getChildOrderNo()); - } - } } return orderModel; diff --git a/user/src/main/java/com/user/controller/BsUserController.java b/user/src/main/java/com/user/controller/BsUserController.java index 1fcfe56..a2a54a6 100644 --- a/user/src/main/java/com/user/controller/BsUserController.java +++ b/user/src/main/java/com/user/controller/BsUserController.java @@ -156,6 +156,50 @@ public class BsUserController { } } + @RequestMapping(value = "/phoneNotVerify", method = RequestMethod.POST) + @ResponseBody + @ApiOperation(value = "H5手机号不校验登陆") + public ResponseData phoneNotVerify(@RequestBody JSONObject body) { + try { + if (body == null + || StringUtils.isBlank(body.getString("platform")) + || StringUtils.isBlank(body.getString("type")) + || StringUtils.isBlank(body.getString("phone")) + ) { + log.error("LoginController --> phone() error!", "请求参数校验失败"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); + } + String phone = body.getString("phone"); + String password = body.getString("password"); + + // 客户端 + UserLoginPlatform platform = UserLoginPlatform.getDataByType(body.getString("platform")); + if (platform == null) { + log.error("LoginController --> phone() error!", "未知客户端"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知客户端"); + } + // 校验手机号格式 + if (!MemberValidateUtil.validatePhone(phone)) { + log.error("LoginController --> phone() error!", "请输入正确的手机号"); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "请输入正确的手机号"); + } + // 登录类型 + UserLoginType loginType = UserLoginType.getDataByType(body.getString("type")); + if (loginType == null) { + log.error("LoginController --> phone() error!", "未知登录类型;" + body.getString("type")); + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知登录类型"); + } + + Map other = new HashMap<>(); + other.put("maOpenId", "maOpenId"); + return ResponseMsgUtil.success(userService.login(platform, loginType, phone, password, other)); + + } catch (Exception e) { + log.error("LoginController --> phone() error!", e); + return ResponseMsgUtil.exception(e); + } + } + @RequestMapping(value = "/phoneTest", method = RequestMethod.POST) @ResponseBody @ApiOperation(value = "手机号登录") From b03c872db4c97a17d73a5d392d3063920dac6e25 Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Fri, 13 Sep 2024 17:39:27 +0800 Subject: [PATCH 2/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 268 ++ .../com/hfkj/dao/BsOrderMeituanMapperExt.java | 7 + .../hfkj/dao/BsOrderMeituanSqlProvider.java | 792 +++++ .../java/com/hfkj/entity/BsOrderMeituan.java | 764 ++++ .../hfkj/entity/BsOrderMeituanExample.java | 3094 +++++++++++++++++ 5 files changed, 4925 insertions(+) create mode 100644 service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java create mode 100644 service/src/main/java/com/hfkj/dao/BsOrderMeituanMapperExt.java create mode 100644 service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java create mode 100644 service/src/main/java/com/hfkj/entity/BsOrderMeituan.java create mode 100644 service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java new file mode 100644 index 0000000..1ddf47a --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -0,0 +1,268 @@ +package com.hfkj.dao; + +import com.hfkj.entity.BsOrderMeituan; +import com.hfkj.entity.BsOrderMeituanExample; +import java.util.List; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.DeleteProvider; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.SelectProvider; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; +import org.apache.ibatis.type.JdbcType; +import org.springframework.stereotype.Repository; + +/** + * + * 代码由工具生成,请勿修改!!! + * 如果需要扩展请在其父类进行扩展 + * + **/ +@Repository +public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { + @SelectProvider(type=BsOrderMeituanSqlProvider.class, method="countByExample") + long countByExample(BsOrderMeituanExample example); + + @DeleteProvider(type=BsOrderMeituanSqlProvider.class, method="deleteByExample") + int deleteByExample(BsOrderMeituanExample example); + + @Delete({ + "delete from bs_order_meituan", + "where id = #{id,jdbcType=BIGINT}" + }) + int deleteByPrimaryKey(Long id); + + @Insert({ + "insert into bs_order_meituan (order_no, child_order_no, ", + "trade_no, sqt_biz_order_id +sqt_biz_order_id, ", + "mer_id, mer_name, user_id, ", + "user_phone, first_business_type, ", + "second_business_type, ent_id, ", + "img, goods_name, ", + "trace_id, goods_count, ", + "total_price, total_deduction_price, ", + "coupon_discount_price, integral_discount_price, ", + "platform_code, pay_real_price, ", + "ent_pay_amount, business_discount_pay_amount, ", + "service_fee_amount, pay_channel, ", + "pay_serial_no, pay_type, ", + "`status`, meituan_status, ", + "staff_info, business_info, ", + "trade_expiring_time, create_time, ", + "pay_time, cancel_time, ", + "refund_time, finish_time, ", + "update_time, exception_status, ", + "exception_msg, ext_1, ", + "ext_2, ext_3)", + "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", + "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR}, ", + "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", + "#{userPhone,jdbcType=VARCHAR}, #{firstBusinessType,jdbcType=VARCHAR}, ", + "#{secondBusinessType,jdbcType=VARCHAR}, #{entId,jdbcType=BIGINT}, ", + "#{img,jdbcType=VARCHAR}, #{goodsName,jdbcType=VARCHAR}, ", + "#{traceId,jdbcType=VARCHAR}, #{goodsCount,jdbcType=INTEGER}, ", + "#{totalPrice,jdbcType=DECIMAL}, #{totalDeductionPrice,jdbcType=DECIMAL}, ", + "#{couponDiscountPrice,jdbcType=DECIMAL}, #{integralDiscountPrice,jdbcType=DECIMAL}, ", + "#{platformCode,jdbcType=VARCHAR}, #{payRealPrice,jdbcType=DECIMAL}, ", + "#{entPayAmount,jdbcType=DECIMAL}, #{businessDiscountPayAmount,jdbcType=DECIMAL}, ", + "#{serviceFeeAmount,jdbcType=DECIMAL}, #{payChannel,jdbcType=INTEGER}, ", + "#{paySerialNo,jdbcType=VARCHAR}, #{payType,jdbcType=INTEGER}, ", + "#{status,jdbcType=INTEGER}, #{meituanStatus,jdbcType=INTEGER}, ", + "#{staffInfo,jdbcType=VARCHAR}, #{businessInfo,jdbcType=VARCHAR}, ", + "#{tradeExpiringTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP}, ", + "#{payTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ", + "#{refundTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", + "#{updateTime,jdbcType=TIMESTAMP}, #{exceptionStatus,jdbcType=BIT}, ", + "#{exceptionMsg,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ", + "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" + }) + @Options(useGeneratedKeys=true,keyProperty="id") + int insert(BsOrderMeituan record); + + @InsertProvider(type=BsOrderMeituanSqlProvider.class, method="insertSelective") + @Options(useGeneratedKeys=true,keyProperty="id") + int insertSelective(BsOrderMeituan record); + + @SelectProvider(type=BsOrderMeituanSqlProvider.class, method="selectByExample") + @Results({ + @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), + @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), + @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), + @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), + @Result(column="sqt_biz_order_id +sqt_biz_order_id", property="sqtBizOrderId +sqtBizOrderId", jdbcType=JdbcType.VARCHAR), + @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), + @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), + @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), + @Result(column="user_phone", property="userPhone", jdbcType=JdbcType.VARCHAR), + @Result(column="first_business_type", property="firstBusinessType", jdbcType=JdbcType.VARCHAR), + @Result(column="second_business_type", property="secondBusinessType", jdbcType=JdbcType.VARCHAR), + @Result(column="ent_id", property="entId", jdbcType=JdbcType.BIGINT), + @Result(column="img", property="img", jdbcType=JdbcType.VARCHAR), + @Result(column="goods_name", property="goodsName", jdbcType=JdbcType.VARCHAR), + @Result(column="trace_id", property="traceId", jdbcType=JdbcType.VARCHAR), + @Result(column="goods_count", property="goodsCount", jdbcType=JdbcType.INTEGER), + @Result(column="total_price", property="totalPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="total_deduction_price", property="totalDeductionPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="coupon_discount_price", property="couponDiscountPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="integral_discount_price", property="integralDiscountPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="platform_code", property="platformCode", jdbcType=JdbcType.VARCHAR), + @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="pay_channel", property="payChannel", jdbcType=JdbcType.INTEGER), + @Result(column="pay_serial_no", property="paySerialNo", jdbcType=JdbcType.VARCHAR), + @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), + @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), + @Result(column="meituan_status", property="meituanStatus", jdbcType=JdbcType.INTEGER), + @Result(column="staff_info", property="staffInfo", jdbcType=JdbcType.VARCHAR), + @Result(column="business_info", property="businessInfo", jdbcType=JdbcType.VARCHAR), + @Result(column="trade_expiring_time", property="tradeExpiringTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="exception_status", property="exceptionStatus", jdbcType=JdbcType.BIT), + @Result(column="exception_msg", property="exceptionMsg", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) + }) + List selectByExample(BsOrderMeituanExample example); + + @Select({ + "select", + "id, order_no, child_order_no, trade_no, sqt_biz_order_id +sqt_biz_order_id, mer_id, ", + "mer_name, user_id, user_phone, first_business_type, second_business_type, ent_id, ", + "img, goods_name, trace_id, goods_count, total_price, total_deduction_price, ", + "coupon_discount_price, integral_discount_price, platform_code, pay_real_price, ", + "ent_pay_amount, business_discount_pay_amount, service_fee_amount, pay_channel, ", + "pay_serial_no, pay_type, `status`, meituan_status, staff_info, business_info, ", + "trade_expiring_time, create_time, pay_time, cancel_time, refund_time, finish_time, ", + "update_time, exception_status, exception_msg, ext_1, ext_2, ext_3", + "from bs_order_meituan", + "where id = #{id,jdbcType=BIGINT}" + }) + @Results({ + @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), + @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), + @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), + @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), + @Result(column="sqt_biz_order_id +sqt_biz_order_id", property="sqtBizOrderId +sqtBizOrderId", jdbcType=JdbcType.VARCHAR), + @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), + @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), + @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), + @Result(column="user_phone", property="userPhone", jdbcType=JdbcType.VARCHAR), + @Result(column="first_business_type", property="firstBusinessType", jdbcType=JdbcType.VARCHAR), + @Result(column="second_business_type", property="secondBusinessType", jdbcType=JdbcType.VARCHAR), + @Result(column="ent_id", property="entId", jdbcType=JdbcType.BIGINT), + @Result(column="img", property="img", jdbcType=JdbcType.VARCHAR), + @Result(column="goods_name", property="goodsName", jdbcType=JdbcType.VARCHAR), + @Result(column="trace_id", property="traceId", jdbcType=JdbcType.VARCHAR), + @Result(column="goods_count", property="goodsCount", jdbcType=JdbcType.INTEGER), + @Result(column="total_price", property="totalPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="total_deduction_price", property="totalDeductionPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="coupon_discount_price", property="couponDiscountPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="integral_discount_price", property="integralDiscountPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="platform_code", property="platformCode", jdbcType=JdbcType.VARCHAR), + @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), + @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="pay_channel", property="payChannel", jdbcType=JdbcType.INTEGER), + @Result(column="pay_serial_no", property="paySerialNo", jdbcType=JdbcType.VARCHAR), + @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), + @Result(column="status", property="status", jdbcType=JdbcType.INTEGER), + @Result(column="meituan_status", property="meituanStatus", jdbcType=JdbcType.INTEGER), + @Result(column="staff_info", property="staffInfo", jdbcType=JdbcType.VARCHAR), + @Result(column="business_info", property="businessInfo", jdbcType=JdbcType.VARCHAR), + @Result(column="trade_expiring_time", property="tradeExpiringTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="cancel_time", property="cancelTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="refund_time", property="refundTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="finish_time", property="finishTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="exception_status", property="exceptionStatus", jdbcType=JdbcType.BIT), + @Result(column="exception_msg", property="exceptionMsg", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR), + @Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR) + }) + BsOrderMeituan selectByPrimaryKey(Long id); + + @UpdateProvider(type=BsOrderMeituanSqlProvider.class, method="updateByExampleSelective") + int updateByExampleSelective(@Param("record") BsOrderMeituan record, @Param("example") BsOrderMeituanExample example); + + @UpdateProvider(type=BsOrderMeituanSqlProvider.class, method="updateByExample") + int updateByExample(@Param("record") BsOrderMeituan record, @Param("example") BsOrderMeituanExample example); + + @UpdateProvider(type=BsOrderMeituanSqlProvider.class, method="updateByPrimaryKeySelective") + int updateByPrimaryKeySelective(BsOrderMeituan record); + + @Update({ + "update bs_order_meituan", + "set order_no = #{orderNo,jdbcType=VARCHAR},", + "child_order_no = #{childOrderNo,jdbcType=VARCHAR},", + "trade_no = #{tradeNo,jdbcType=VARCHAR},", + "sqt_biz_order_id +sqt_biz_order_id = #{sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR},", + "mer_id = #{merId,jdbcType=BIGINT},", + "mer_name = #{merName,jdbcType=VARCHAR},", + "user_id = #{userId,jdbcType=BIGINT},", + "user_phone = #{userPhone,jdbcType=VARCHAR},", + "first_business_type = #{firstBusinessType,jdbcType=VARCHAR},", + "second_business_type = #{secondBusinessType,jdbcType=VARCHAR},", + "ent_id = #{entId,jdbcType=BIGINT},", + "img = #{img,jdbcType=VARCHAR},", + "goods_name = #{goodsName,jdbcType=VARCHAR},", + "trace_id = #{traceId,jdbcType=VARCHAR},", + "goods_count = #{goodsCount,jdbcType=INTEGER},", + "total_price = #{totalPrice,jdbcType=DECIMAL},", + "total_deduction_price = #{totalDeductionPrice,jdbcType=DECIMAL},", + "coupon_discount_price = #{couponDiscountPrice,jdbcType=DECIMAL},", + "integral_discount_price = #{integralDiscountPrice,jdbcType=DECIMAL},", + "platform_code = #{platformCode,jdbcType=VARCHAR},", + "pay_real_price = #{payRealPrice,jdbcType=DECIMAL},", + "ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL},", + "business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL},", + "service_fee_amount = #{serviceFeeAmount,jdbcType=DECIMAL},", + "pay_channel = #{payChannel,jdbcType=INTEGER},", + "pay_serial_no = #{paySerialNo,jdbcType=VARCHAR},", + "pay_type = #{payType,jdbcType=INTEGER},", + "`status` = #{status,jdbcType=INTEGER},", + "meituan_status = #{meituanStatus,jdbcType=INTEGER},", + "staff_info = #{staffInfo,jdbcType=VARCHAR},", + "business_info = #{businessInfo,jdbcType=VARCHAR},", + "trade_expiring_time = #{tradeExpiringTime,jdbcType=TIMESTAMP},", + "create_time = #{createTime,jdbcType=TIMESTAMP},", + "pay_time = #{payTime,jdbcType=TIMESTAMP},", + "cancel_time = #{cancelTime,jdbcType=TIMESTAMP},", + "refund_time = #{refundTime,jdbcType=TIMESTAMP},", + "finish_time = #{finishTime,jdbcType=TIMESTAMP},", + "update_time = #{updateTime,jdbcType=TIMESTAMP},", + "exception_status = #{exceptionStatus,jdbcType=BIT},", + "exception_msg = #{exceptionMsg,jdbcType=VARCHAR},", + "ext_1 = #{ext1,jdbcType=VARCHAR},", + "ext_2 = #{ext2,jdbcType=VARCHAR},", + "ext_3 = #{ext3,jdbcType=VARCHAR}", + "where id = #{id,jdbcType=BIGINT}" + }) + int updateByPrimaryKey(BsOrderMeituan record); +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapperExt.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapperExt.java new file mode 100644 index 0000000..1d887a4 --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapperExt.java @@ -0,0 +1,7 @@ +package com.hfkj.dao; + +/** + * mapper扩展类 + */ +public interface BsOrderMeituanMapperExt { +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java new file mode 100644 index 0000000..4516261 --- /dev/null +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -0,0 +1,792 @@ +package com.hfkj.dao; + +import com.hfkj.entity.BsOrderMeituan; +import com.hfkj.entity.BsOrderMeituanExample.Criteria; +import com.hfkj.entity.BsOrderMeituanExample.Criterion; +import com.hfkj.entity.BsOrderMeituanExample; +import java.util.List; +import java.util.Map; +import org.apache.ibatis.jdbc.SQL; + +public class BsOrderMeituanSqlProvider { + + public String countByExample(BsOrderMeituanExample example) { + SQL sql = new SQL(); + sql.SELECT("count(*)").FROM("bs_order_meituan"); + applyWhere(sql, example, false); + return sql.toString(); + } + + public String deleteByExample(BsOrderMeituanExample example) { + SQL sql = new SQL(); + sql.DELETE_FROM("bs_order_meituan"); + applyWhere(sql, example, false); + return sql.toString(); + } + + public String insertSelective(BsOrderMeituan record) { + SQL sql = new SQL(); + sql.INSERT_INTO("bs_order_meituan"); + + if (record.getOrderNo() != null) { + sql.VALUES("order_no", "#{orderNo,jdbcType=VARCHAR}"); + } + + if (record.getChildOrderNo() != null) { + sql.VALUES("child_order_no", "#{childOrderNo,jdbcType=VARCHAR}"); + } + + if (record.getTradeNo() != null) { + sql.VALUES("trade_no", "#{tradeNo,jdbcType=VARCHAR}"); + } + + if (record.getSqtBizOrderId +sqtBizOrderId() != null) { + sql.VALUES("sqt_biz_order_id +sqt_biz_order_id", "#{sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR}"); + } + + if (record.getMerId() != null) { + sql.VALUES("mer_id", "#{merId,jdbcType=BIGINT}"); + } + + if (record.getMerName() != null) { + sql.VALUES("mer_name", "#{merName,jdbcType=VARCHAR}"); + } + + if (record.getUserId() != null) { + sql.VALUES("user_id", "#{userId,jdbcType=BIGINT}"); + } + + if (record.getUserPhone() != null) { + sql.VALUES("user_phone", "#{userPhone,jdbcType=VARCHAR}"); + } + + if (record.getFirstBusinessType() != null) { + sql.VALUES("first_business_type", "#{firstBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getSecondBusinessType() != null) { + sql.VALUES("second_business_type", "#{secondBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getEntId() != null) { + sql.VALUES("ent_id", "#{entId,jdbcType=BIGINT}"); + } + + if (record.getImg() != null) { + sql.VALUES("img", "#{img,jdbcType=VARCHAR}"); + } + + if (record.getGoodsName() != null) { + sql.VALUES("goods_name", "#{goodsName,jdbcType=VARCHAR}"); + } + + if (record.getTraceId() != null) { + sql.VALUES("trace_id", "#{traceId,jdbcType=VARCHAR}"); + } + + if (record.getGoodsCount() != null) { + sql.VALUES("goods_count", "#{goodsCount,jdbcType=INTEGER}"); + } + + if (record.getTotalPrice() != null) { + sql.VALUES("total_price", "#{totalPrice,jdbcType=DECIMAL}"); + } + + if (record.getTotalDeductionPrice() != null) { + sql.VALUES("total_deduction_price", "#{totalDeductionPrice,jdbcType=DECIMAL}"); + } + + if (record.getCouponDiscountPrice() != null) { + sql.VALUES("coupon_discount_price", "#{couponDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getIntegralDiscountPrice() != null) { + sql.VALUES("integral_discount_price", "#{integralDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getPlatformCode() != null) { + sql.VALUES("platform_code", "#{platformCode,jdbcType=VARCHAR}"); + } + + if (record.getPayRealPrice() != null) { + sql.VALUES("pay_real_price", "#{payRealPrice,jdbcType=DECIMAL}"); + } + + if (record.getEntPayAmount() != null) { + sql.VALUES("ent_pay_amount", "#{entPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getBusinessDiscountPayAmount() != null) { + sql.VALUES("business_discount_pay_amount", "#{businessDiscountPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getServiceFeeAmount() != null) { + sql.VALUES("service_fee_amount", "#{serviceFeeAmount,jdbcType=DECIMAL}"); + } + + if (record.getPayChannel() != null) { + sql.VALUES("pay_channel", "#{payChannel,jdbcType=INTEGER}"); + } + + if (record.getPaySerialNo() != null) { + sql.VALUES("pay_serial_no", "#{paySerialNo,jdbcType=VARCHAR}"); + } + + if (record.getPayType() != null) { + sql.VALUES("pay_type", "#{payType,jdbcType=INTEGER}"); + } + + if (record.getStatus() != null) { + sql.VALUES("`status`", "#{status,jdbcType=INTEGER}"); + } + + if (record.getMeituanStatus() != null) { + sql.VALUES("meituan_status", "#{meituanStatus,jdbcType=INTEGER}"); + } + + if (record.getStaffInfo() != null) { + sql.VALUES("staff_info", "#{staffInfo,jdbcType=VARCHAR}"); + } + + if (record.getBusinessInfo() != null) { + sql.VALUES("business_info", "#{businessInfo,jdbcType=VARCHAR}"); + } + + if (record.getTradeExpiringTime() != null) { + sql.VALUES("trade_expiring_time", "#{tradeExpiringTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCreateTime() != null) { + sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getPayTime() != null) { + sql.VALUES("pay_time", "#{payTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCancelTime() != null) { + sql.VALUES("cancel_time", "#{cancelTime,jdbcType=TIMESTAMP}"); + } + + if (record.getRefundTime() != null) { + sql.VALUES("refund_time", "#{refundTime,jdbcType=TIMESTAMP}"); + } + + if (record.getFinishTime() != null) { + sql.VALUES("finish_time", "#{finishTime,jdbcType=TIMESTAMP}"); + } + + if (record.getUpdateTime() != null) { + sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExceptionStatus() != null) { + sql.VALUES("exception_status", "#{exceptionStatus,jdbcType=BIT}"); + } + + if (record.getExceptionMsg() != null) { + sql.VALUES("exception_msg", "#{exceptionMsg,jdbcType=VARCHAR}"); + } + + if (record.getExt1() != null) { + sql.VALUES("ext_1", "#{ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.VALUES("ext_2", "#{ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.VALUES("ext_3", "#{ext3,jdbcType=VARCHAR}"); + } + + return sql.toString(); + } + + public String selectByExample(BsOrderMeituanExample example) { + SQL sql = new SQL(); + if (example != null && example.isDistinct()) { + sql.SELECT_DISTINCT("id"); + } else { + sql.SELECT("id"); + } + sql.SELECT("order_no"); + sql.SELECT("child_order_no"); + sql.SELECT("trade_no"); + sql.SELECT("sqt_biz_order_id +sqt_biz_order_id"); + sql.SELECT("mer_id"); + sql.SELECT("mer_name"); + sql.SELECT("user_id"); + sql.SELECT("user_phone"); + sql.SELECT("first_business_type"); + sql.SELECT("second_business_type"); + sql.SELECT("ent_id"); + sql.SELECT("img"); + sql.SELECT("goods_name"); + sql.SELECT("trace_id"); + sql.SELECT("goods_count"); + sql.SELECT("total_price"); + sql.SELECT("total_deduction_price"); + sql.SELECT("coupon_discount_price"); + sql.SELECT("integral_discount_price"); + sql.SELECT("platform_code"); + sql.SELECT("pay_real_price"); + sql.SELECT("ent_pay_amount"); + sql.SELECT("business_discount_pay_amount"); + sql.SELECT("service_fee_amount"); + sql.SELECT("pay_channel"); + sql.SELECT("pay_serial_no"); + sql.SELECT("pay_type"); + sql.SELECT("`status`"); + sql.SELECT("meituan_status"); + sql.SELECT("staff_info"); + sql.SELECT("business_info"); + sql.SELECT("trade_expiring_time"); + sql.SELECT("create_time"); + sql.SELECT("pay_time"); + sql.SELECT("cancel_time"); + sql.SELECT("refund_time"); + sql.SELECT("finish_time"); + sql.SELECT("update_time"); + sql.SELECT("exception_status"); + sql.SELECT("exception_msg"); + sql.SELECT("ext_1"); + sql.SELECT("ext_2"); + sql.SELECT("ext_3"); + sql.FROM("bs_order_meituan"); + applyWhere(sql, example, false); + + if (example != null && example.getOrderByClause() != null) { + sql.ORDER_BY(example.getOrderByClause()); + } + + return sql.toString(); + } + + public String updateByExampleSelective(Map parameter) { + BsOrderMeituan record = (BsOrderMeituan) parameter.get("record"); + BsOrderMeituanExample example = (BsOrderMeituanExample) parameter.get("example"); + + SQL sql = new SQL(); + sql.UPDATE("bs_order_meituan"); + + if (record.getId() != null) { + sql.SET("id = #{record.id,jdbcType=BIGINT}"); + } + + if (record.getOrderNo() != null) { + sql.SET("order_no = #{record.orderNo,jdbcType=VARCHAR}"); + } + + if (record.getChildOrderNo() != null) { + sql.SET("child_order_no = #{record.childOrderNo,jdbcType=VARCHAR}"); + } + + if (record.getTradeNo() != null) { + sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); + } + + if (record.getSqtBizOrderId +sqtBizOrderId() != null) { + sql.SET("sqt_biz_order_id +sqt_biz_order_id = #{record.sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR}"); + } + + if (record.getMerId() != null) { + sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}"); + } + + if (record.getMerName() != null) { + sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}"); + } + + if (record.getUserId() != null) { + sql.SET("user_id = #{record.userId,jdbcType=BIGINT}"); + } + + if (record.getUserPhone() != null) { + sql.SET("user_phone = #{record.userPhone,jdbcType=VARCHAR}"); + } + + if (record.getFirstBusinessType() != null) { + sql.SET("first_business_type = #{record.firstBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getSecondBusinessType() != null) { + sql.SET("second_business_type = #{record.secondBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getEntId() != null) { + sql.SET("ent_id = #{record.entId,jdbcType=BIGINT}"); + } + + if (record.getImg() != null) { + sql.SET("img = #{record.img,jdbcType=VARCHAR}"); + } + + if (record.getGoodsName() != null) { + sql.SET("goods_name = #{record.goodsName,jdbcType=VARCHAR}"); + } + + if (record.getTraceId() != null) { + sql.SET("trace_id = #{record.traceId,jdbcType=VARCHAR}"); + } + + if (record.getGoodsCount() != null) { + sql.SET("goods_count = #{record.goodsCount,jdbcType=INTEGER}"); + } + + if (record.getTotalPrice() != null) { + sql.SET("total_price = #{record.totalPrice,jdbcType=DECIMAL}"); + } + + if (record.getTotalDeductionPrice() != null) { + sql.SET("total_deduction_price = #{record.totalDeductionPrice,jdbcType=DECIMAL}"); + } + + if (record.getCouponDiscountPrice() != null) { + sql.SET("coupon_discount_price = #{record.couponDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getIntegralDiscountPrice() != null) { + sql.SET("integral_discount_price = #{record.integralDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getPlatformCode() != null) { + sql.SET("platform_code = #{record.platformCode,jdbcType=VARCHAR}"); + } + + if (record.getPayRealPrice() != null) { + sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); + } + + if (record.getEntPayAmount() != null) { + sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getBusinessDiscountPayAmount() != null) { + sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getServiceFeeAmount() != null) { + sql.SET("service_fee_amount = #{record.serviceFeeAmount,jdbcType=DECIMAL}"); + } + + if (record.getPayChannel() != null) { + sql.SET("pay_channel = #{record.payChannel,jdbcType=INTEGER}"); + } + + if (record.getPaySerialNo() != null) { + sql.SET("pay_serial_no = #{record.paySerialNo,jdbcType=VARCHAR}"); + } + + if (record.getPayType() != null) { + sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); + } + + if (record.getStatus() != null) { + sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); + } + + if (record.getMeituanStatus() != null) { + sql.SET("meituan_status = #{record.meituanStatus,jdbcType=INTEGER}"); + } + + if (record.getStaffInfo() != null) { + sql.SET("staff_info = #{record.staffInfo,jdbcType=VARCHAR}"); + } + + if (record.getBusinessInfo() != null) { + sql.SET("business_info = #{record.businessInfo,jdbcType=VARCHAR}"); + } + + if (record.getTradeExpiringTime() != null) { + sql.SET("trade_expiring_time = #{record.tradeExpiringTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCreateTime() != null) { + sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getPayTime() != null) { + sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCancelTime() != null) { + sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}"); + } + + if (record.getRefundTime() != null) { + sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}"); + } + + if (record.getFinishTime() != null) { + sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}"); + } + + if (record.getUpdateTime() != null) { + sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExceptionStatus() != null) { + sql.SET("exception_status = #{record.exceptionStatus,jdbcType=BIT}"); + } + + if (record.getExceptionMsg() != null) { + sql.SET("exception_msg = #{record.exceptionMsg,jdbcType=VARCHAR}"); + } + + if (record.getExt1() != null) { + sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); + } + + applyWhere(sql, example, true); + return sql.toString(); + } + + public String updateByExample(Map parameter) { + SQL sql = new SQL(); + sql.UPDATE("bs_order_meituan"); + + sql.SET("id = #{record.id,jdbcType=BIGINT}"); + sql.SET("order_no = #{record.orderNo,jdbcType=VARCHAR}"); + sql.SET("child_order_no = #{record.childOrderNo,jdbcType=VARCHAR}"); + sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); + sql.SET("sqt_biz_order_id +sqt_biz_order_id = #{record.sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR}"); + sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}"); + sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}"); + sql.SET("user_id = #{record.userId,jdbcType=BIGINT}"); + sql.SET("user_phone = #{record.userPhone,jdbcType=VARCHAR}"); + sql.SET("first_business_type = #{record.firstBusinessType,jdbcType=VARCHAR}"); + sql.SET("second_business_type = #{record.secondBusinessType,jdbcType=VARCHAR}"); + sql.SET("ent_id = #{record.entId,jdbcType=BIGINT}"); + sql.SET("img = #{record.img,jdbcType=VARCHAR}"); + sql.SET("goods_name = #{record.goodsName,jdbcType=VARCHAR}"); + sql.SET("trace_id = #{record.traceId,jdbcType=VARCHAR}"); + sql.SET("goods_count = #{record.goodsCount,jdbcType=INTEGER}"); + sql.SET("total_price = #{record.totalPrice,jdbcType=DECIMAL}"); + sql.SET("total_deduction_price = #{record.totalDeductionPrice,jdbcType=DECIMAL}"); + sql.SET("coupon_discount_price = #{record.couponDiscountPrice,jdbcType=DECIMAL}"); + sql.SET("integral_discount_price = #{record.integralDiscountPrice,jdbcType=DECIMAL}"); + sql.SET("platform_code = #{record.platformCode,jdbcType=VARCHAR}"); + sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); + sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); + sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); + sql.SET("service_fee_amount = #{record.serviceFeeAmount,jdbcType=DECIMAL}"); + sql.SET("pay_channel = #{record.payChannel,jdbcType=INTEGER}"); + sql.SET("pay_serial_no = #{record.paySerialNo,jdbcType=VARCHAR}"); + sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); + sql.SET("`status` = #{record.status,jdbcType=INTEGER}"); + sql.SET("meituan_status = #{record.meituanStatus,jdbcType=INTEGER}"); + sql.SET("staff_info = #{record.staffInfo,jdbcType=VARCHAR}"); + sql.SET("business_info = #{record.businessInfo,jdbcType=VARCHAR}"); + sql.SET("trade_expiring_time = #{record.tradeExpiringTime,jdbcType=TIMESTAMP}"); + sql.SET("create_time = #{record.createTime,jdbcType=TIMESTAMP}"); + sql.SET("pay_time = #{record.payTime,jdbcType=TIMESTAMP}"); + sql.SET("cancel_time = #{record.cancelTime,jdbcType=TIMESTAMP}"); + sql.SET("refund_time = #{record.refundTime,jdbcType=TIMESTAMP}"); + sql.SET("finish_time = #{record.finishTime,jdbcType=TIMESTAMP}"); + sql.SET("update_time = #{record.updateTime,jdbcType=TIMESTAMP}"); + sql.SET("exception_status = #{record.exceptionStatus,jdbcType=BIT}"); + sql.SET("exception_msg = #{record.exceptionMsg,jdbcType=VARCHAR}"); + sql.SET("ext_1 = #{record.ext1,jdbcType=VARCHAR}"); + sql.SET("ext_2 = #{record.ext2,jdbcType=VARCHAR}"); + sql.SET("ext_3 = #{record.ext3,jdbcType=VARCHAR}"); + + BsOrderMeituanExample example = (BsOrderMeituanExample) parameter.get("example"); + applyWhere(sql, example, true); + return sql.toString(); + } + + public String updateByPrimaryKeySelective(BsOrderMeituan record) { + SQL sql = new SQL(); + sql.UPDATE("bs_order_meituan"); + + if (record.getOrderNo() != null) { + sql.SET("order_no = #{orderNo,jdbcType=VARCHAR}"); + } + + if (record.getChildOrderNo() != null) { + sql.SET("child_order_no = #{childOrderNo,jdbcType=VARCHAR}"); + } + + if (record.getTradeNo() != null) { + sql.SET("trade_no = #{tradeNo,jdbcType=VARCHAR}"); + } + + if (record.getSqtBizOrderId +sqtBizOrderId() != null) { + sql.SET("sqt_biz_order_id +sqt_biz_order_id = #{sqtBizOrderId +sqtBizOrderId,jdbcType=VARCHAR}"); + } + + if (record.getMerId() != null) { + sql.SET("mer_id = #{merId,jdbcType=BIGINT}"); + } + + if (record.getMerName() != null) { + sql.SET("mer_name = #{merName,jdbcType=VARCHAR}"); + } + + if (record.getUserId() != null) { + sql.SET("user_id = #{userId,jdbcType=BIGINT}"); + } + + if (record.getUserPhone() != null) { + sql.SET("user_phone = #{userPhone,jdbcType=VARCHAR}"); + } + + if (record.getFirstBusinessType() != null) { + sql.SET("first_business_type = #{firstBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getSecondBusinessType() != null) { + sql.SET("second_business_type = #{secondBusinessType,jdbcType=VARCHAR}"); + } + + if (record.getEntId() != null) { + sql.SET("ent_id = #{entId,jdbcType=BIGINT}"); + } + + if (record.getImg() != null) { + sql.SET("img = #{img,jdbcType=VARCHAR}"); + } + + if (record.getGoodsName() != null) { + sql.SET("goods_name = #{goodsName,jdbcType=VARCHAR}"); + } + + if (record.getTraceId() != null) { + sql.SET("trace_id = #{traceId,jdbcType=VARCHAR}"); + } + + if (record.getGoodsCount() != null) { + sql.SET("goods_count = #{goodsCount,jdbcType=INTEGER}"); + } + + if (record.getTotalPrice() != null) { + sql.SET("total_price = #{totalPrice,jdbcType=DECIMAL}"); + } + + if (record.getTotalDeductionPrice() != null) { + sql.SET("total_deduction_price = #{totalDeductionPrice,jdbcType=DECIMAL}"); + } + + if (record.getCouponDiscountPrice() != null) { + sql.SET("coupon_discount_price = #{couponDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getIntegralDiscountPrice() != null) { + sql.SET("integral_discount_price = #{integralDiscountPrice,jdbcType=DECIMAL}"); + } + + if (record.getPlatformCode() != null) { + sql.SET("platform_code = #{platformCode,jdbcType=VARCHAR}"); + } + + if (record.getPayRealPrice() != null) { + sql.SET("pay_real_price = #{payRealPrice,jdbcType=DECIMAL}"); + } + + if (record.getEntPayAmount() != null) { + sql.SET("ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getBusinessDiscountPayAmount() != null) { + sql.SET("business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL}"); + } + + if (record.getServiceFeeAmount() != null) { + sql.SET("service_fee_amount = #{serviceFeeAmount,jdbcType=DECIMAL}"); + } + + if (record.getPayChannel() != null) { + sql.SET("pay_channel = #{payChannel,jdbcType=INTEGER}"); + } + + if (record.getPaySerialNo() != null) { + sql.SET("pay_serial_no = #{paySerialNo,jdbcType=VARCHAR}"); + } + + if (record.getPayType() != null) { + sql.SET("pay_type = #{payType,jdbcType=INTEGER}"); + } + + if (record.getStatus() != null) { + sql.SET("`status` = #{status,jdbcType=INTEGER}"); + } + + if (record.getMeituanStatus() != null) { + sql.SET("meituan_status = #{meituanStatus,jdbcType=INTEGER}"); + } + + if (record.getStaffInfo() != null) { + sql.SET("staff_info = #{staffInfo,jdbcType=VARCHAR}"); + } + + if (record.getBusinessInfo() != null) { + sql.SET("business_info = #{businessInfo,jdbcType=VARCHAR}"); + } + + if (record.getTradeExpiringTime() != null) { + sql.SET("trade_expiring_time = #{tradeExpiringTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCreateTime() != null) { + sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getPayTime() != null) { + sql.SET("pay_time = #{payTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCancelTime() != null) { + sql.SET("cancel_time = #{cancelTime,jdbcType=TIMESTAMP}"); + } + + if (record.getRefundTime() != null) { + sql.SET("refund_time = #{refundTime,jdbcType=TIMESTAMP}"); + } + + if (record.getFinishTime() != null) { + sql.SET("finish_time = #{finishTime,jdbcType=TIMESTAMP}"); + } + + if (record.getUpdateTime() != null) { + sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}"); + } + + if (record.getExceptionStatus() != null) { + sql.SET("exception_status = #{exceptionStatus,jdbcType=BIT}"); + } + + if (record.getExceptionMsg() != null) { + sql.SET("exception_msg = #{exceptionMsg,jdbcType=VARCHAR}"); + } + + if (record.getExt1() != null) { + sql.SET("ext_1 = #{ext1,jdbcType=VARCHAR}"); + } + + if (record.getExt2() != null) { + sql.SET("ext_2 = #{ext2,jdbcType=VARCHAR}"); + } + + if (record.getExt3() != null) { + sql.SET("ext_3 = #{ext3,jdbcType=VARCHAR}"); + } + + sql.WHERE("id = #{id,jdbcType=BIGINT}"); + + return sql.toString(); + } + + protected void applyWhere(SQL sql, BsOrderMeituanExample example, boolean includeExamplePhrase) { + if (example == null) { + return; + } + + String parmPhrase1; + String parmPhrase1_th; + String parmPhrase2; + String parmPhrase2_th; + String parmPhrase3; + String parmPhrase3_th; + if (includeExamplePhrase) { + parmPhrase1 = "%s #{example.oredCriteria[%d].allCriteria[%d].value}"; + parmPhrase1_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; + parmPhrase2 = "%s #{example.oredCriteria[%d].allCriteria[%d].value} and #{example.oredCriteria[%d].criteria[%d].secondValue}"; + parmPhrase2_th = "%s #{example.oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{example.oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; + parmPhrase3 = "#{example.oredCriteria[%d].allCriteria[%d].value[%d]}"; + parmPhrase3_th = "#{example.oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; + } else { + parmPhrase1 = "%s #{oredCriteria[%d].allCriteria[%d].value}"; + parmPhrase1_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s}"; + parmPhrase2 = "%s #{oredCriteria[%d].allCriteria[%d].value} and #{oredCriteria[%d].criteria[%d].secondValue}"; + parmPhrase2_th = "%s #{oredCriteria[%d].allCriteria[%d].value,typeHandler=%s} and #{oredCriteria[%d].criteria[%d].secondValue,typeHandler=%s}"; + parmPhrase3 = "#{oredCriteria[%d].allCriteria[%d].value[%d]}"; + parmPhrase3_th = "#{oredCriteria[%d].allCriteria[%d].value[%d],typeHandler=%s}"; + } + + StringBuilder sb = new StringBuilder(); + List oredCriteria = example.getOredCriteria(); + boolean firstCriteria = true; + for (int i = 0; i < oredCriteria.size(); i++) { + Criteria criteria = oredCriteria.get(i); + if (criteria.isValid()) { + if (firstCriteria) { + firstCriteria = false; + } else { + sb.append(" or "); + } + + sb.append('('); + List criterions = criteria.getAllCriteria(); + boolean firstCriterion = true; + for (int j = 0; j < criterions.size(); j++) { + Criterion criterion = criterions.get(j); + if (firstCriterion) { + firstCriterion = false; + } else { + sb.append(" and "); + } + + if (criterion.isNoValue()) { + sb.append(criterion.getCondition()); + } else if (criterion.isSingleValue()) { + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase1, criterion.getCondition(), i, j)); + } else { + sb.append(String.format(parmPhrase1_th, criterion.getCondition(), i, j,criterion.getTypeHandler())); + } + } else if (criterion.isBetweenValue()) { + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase2, criterion.getCondition(), i, j, i, j)); + } else { + sb.append(String.format(parmPhrase2_th, criterion.getCondition(), i, j, criterion.getTypeHandler(), i, j, criterion.getTypeHandler())); + } + } else if (criterion.isListValue()) { + sb.append(criterion.getCondition()); + sb.append(" ("); + List listItems = (List) criterion.getValue(); + boolean comma = false; + for (int k = 0; k < listItems.size(); k++) { + if (comma) { + sb.append(", "); + } else { + comma = true; + } + if (criterion.getTypeHandler() == null) { + sb.append(String.format(parmPhrase3, i, j, k)); + } else { + sb.append(String.format(parmPhrase3_th, i, j, k, criterion.getTypeHandler())); + } + } + sb.append(')'); + } + } + sb.append(')'); + } + } + + if (sb.length() > 0) { + sql.WHERE(sb.toString()); + } + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java new file mode 100644 index 0000000..9eb3b67 --- /dev/null +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -0,0 +1,764 @@ +package com.hfkj.entity; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * bs_order_meituan + * @author + */ +/** + * + * 代码由工具生成 + * + **/ +public class BsOrderMeituan implements Serializable { + /** + * 主键 + */ + private Long id; + + /** + * 交易订单号 + */ + private String orderNo; + + /** + * 子订单号 + */ + private String childOrderNo; + + /** + * 交易号,每笔支付的唯一标识,需要以此字段做幂等处理 + */ + private String tradeNo; + + /** + * 美团企业版订单号 + */ + private String sqtBizOrderId +sqtBizOrderId; + + /** + * 商户id + */ + private Long merId; + + /** + * 商户名称 + */ + private String merName; + + /** + * 用户id + */ + private Long userId; + + /** + * 用户手机号 + */ + private String userPhone; + + /** + * 一级业务类型编码 + */ + private String firstBusinessType; + + /** + * 二级业务类型编码 + */ + private String secondBusinessType; + + /** + * 商品id + */ + private Long entId; + + /** + * 图片 + */ + private String img; + + /** + * 商品名称 + */ + private String goodsName; + + /** + * 日志查询 ID + */ + private String traceId; + + /** + * 商品数量 + */ + private Integer goodsCount; + + /** + * 交易金额 + */ + private BigDecimal totalPrice; + + /** + * 总优惠金额(优惠券优惠金额 + 积分抵扣) + */ + private BigDecimal totalDeductionPrice; + + /** + * 优惠券优惠金额 + */ + private BigDecimal couponDiscountPrice; + + /** + * 积分抵扣优惠金额 + */ + private Long integralDiscountPrice; + + /** + * 登录平台code + */ + private String platformCode; + + /** + * 实付金额 + */ + private BigDecimal payRealPrice; + + /** + * 企业待支付金额(不含服务费),单位元 + */ + private BigDecimal entPayAmount; + + /** + * 优惠承担支付金额,单位元;NULL 代表无优惠承担金额 + */ + private BigDecimal businessDiscountPayAmount; + + /** + * 随单服务费(空值表示没有服务费),单位元,支持小数点后两位 + */ + private BigDecimal serviceFeeAmount; + + /** + * 支付渠道与bs_order订单表同步 + */ + private Integer payChannel; + + /** + * 客户支付流水号 + */ + private String paySerialNo; + + /** + * 支付方式与bs_order订单表同步 + */ + private Integer payType; + + /** + * 1:待发货 2:已发货 3:配送中 4:已送达 5:已取消 6:退货中 7:已退货 8:待支付 0:删除 + */ + private Integer status; + + /** + * 支付状态 +0 待支付 +1 支付成功 +2 支付失败 +10 支付超时关单 + */ + private Integer meituanStatus; + + /** + * 员工信息 + */ + private String staffInfo; + + /** + * 业务信息字段,为各品类(一级业务类型编码)业务信息 JSON 序列化后的字符串 + */ + private String businessInfo; + + /** + * 交易关单时间,格式 yyyy-MM-dd hh:mm:ss,超过关单时间后客户平台不应再允许用户支付成功或通知美团企业版交易支付成功 + */ + private Date tradeExpiringTime; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 支付时间 + */ + private Date payTime; + + /** + * 取消时间 + */ + private Date cancelTime; + + /** + * 退款时间 + */ + private Date refundTime; + + /** + * 完成时间 + */ + private Date finishTime; + + /** + * 更新时间 + */ + private Date updateTime; + + /** + * 异常状态 0:正常 1:异常 + */ + private Boolean exceptionStatus; + + /** + * 异常内容 + */ + private String exceptionMsg; + + private String ext1; + + private String ext2; + + private String ext3; + + private static final long serialVersionUID = 1L; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getOrderNo() { + return orderNo; + } + + public void setOrderNo(String orderNo) { + this.orderNo = orderNo; + } + + public String getChildOrderNo() { + return childOrderNo; + } + + public void setChildOrderNo(String childOrderNo) { + this.childOrderNo = childOrderNo; + } + + public String getTradeNo() { + return tradeNo; + } + + public void setTradeNo(String tradeNo) { + this.tradeNo = tradeNo; + } + + public String getSqtBizOrderId +sqtBizOrderId() { + return sqtBizOrderId +sqtBizOrderId; + } + + public void setSqtBizOrderId +sqtBizOrderId(String sqtBizOrderId +sqtBizOrderId) { + this.sqtBizOrderId +sqtBizOrderId = sqtBizOrderId +sqtBizOrderId; + } + + public Long getMerId() { + return merId; + } + + public void setMerId(Long merId) { + this.merId = merId; + } + + public String getMerName() { + return merName; + } + + public void setMerName(String merName) { + this.merName = merName; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getUserPhone() { + return userPhone; + } + + public void setUserPhone(String userPhone) { + this.userPhone = userPhone; + } + + public String getFirstBusinessType() { + return firstBusinessType; + } + + public void setFirstBusinessType(String firstBusinessType) { + this.firstBusinessType = firstBusinessType; + } + + public String getSecondBusinessType() { + return secondBusinessType; + } + + public void setSecondBusinessType(String secondBusinessType) { + this.secondBusinessType = secondBusinessType; + } + + public Long getEntId() { + return entId; + } + + public void setEntId(Long entId) { + this.entId = entId; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public String getTraceId() { + return traceId; + } + + public void setTraceId(String traceId) { + this.traceId = traceId; + } + + public Integer getGoodsCount() { + return goodsCount; + } + + public void setGoodsCount(Integer goodsCount) { + this.goodsCount = goodsCount; + } + + public BigDecimal getTotalPrice() { + return totalPrice; + } + + public void setTotalPrice(BigDecimal totalPrice) { + this.totalPrice = totalPrice; + } + + public BigDecimal getTotalDeductionPrice() { + return totalDeductionPrice; + } + + public void setTotalDeductionPrice(BigDecimal totalDeductionPrice) { + this.totalDeductionPrice = totalDeductionPrice; + } + + public BigDecimal getCouponDiscountPrice() { + return couponDiscountPrice; + } + + public void setCouponDiscountPrice(BigDecimal couponDiscountPrice) { + this.couponDiscountPrice = couponDiscountPrice; + } + + public Long getIntegralDiscountPrice() { + return integralDiscountPrice; + } + + public void setIntegralDiscountPrice(Long integralDiscountPrice) { + this.integralDiscountPrice = integralDiscountPrice; + } + + public String getPlatformCode() { + return platformCode; + } + + public void setPlatformCode(String platformCode) { + this.platformCode = platformCode; + } + + public BigDecimal getPayRealPrice() { + return payRealPrice; + } + + public void setPayRealPrice(BigDecimal payRealPrice) { + this.payRealPrice = payRealPrice; + } + + public BigDecimal getEntPayAmount() { + return entPayAmount; + } + + public void setEntPayAmount(BigDecimal entPayAmount) { + this.entPayAmount = entPayAmount; + } + + public BigDecimal getBusinessDiscountPayAmount() { + return businessDiscountPayAmount; + } + + public void setBusinessDiscountPayAmount(BigDecimal businessDiscountPayAmount) { + this.businessDiscountPayAmount = businessDiscountPayAmount; + } + + public BigDecimal getServiceFeeAmount() { + return serviceFeeAmount; + } + + public void setServiceFeeAmount(BigDecimal serviceFeeAmount) { + this.serviceFeeAmount = serviceFeeAmount; + } + + public Integer getPayChannel() { + return payChannel; + } + + public void setPayChannel(Integer payChannel) { + this.payChannel = payChannel; + } + + public String getPaySerialNo() { + return paySerialNo; + } + + public void setPaySerialNo(String paySerialNo) { + this.paySerialNo = paySerialNo; + } + + public Integer getPayType() { + return payType; + } + + public void setPayType(Integer payType) { + this.payType = payType; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getMeituanStatus() { + return meituanStatus; + } + + public void setMeituanStatus(Integer meituanStatus) { + this.meituanStatus = meituanStatus; + } + + public String getStaffInfo() { + return staffInfo; + } + + public void setStaffInfo(String staffInfo) { + this.staffInfo = staffInfo; + } + + public String getBusinessInfo() { + return businessInfo; + } + + public void setBusinessInfo(String businessInfo) { + this.businessInfo = businessInfo; + } + + public Date getTradeExpiringTime() { + return tradeExpiringTime; + } + + public void setTradeExpiringTime(Date tradeExpiringTime) { + this.tradeExpiringTime = tradeExpiringTime; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getPayTime() { + return payTime; + } + + public void setPayTime(Date payTime) { + this.payTime = payTime; + } + + public Date getCancelTime() { + return cancelTime; + } + + public void setCancelTime(Date cancelTime) { + this.cancelTime = cancelTime; + } + + public Date getRefundTime() { + return refundTime; + } + + public void setRefundTime(Date refundTime) { + this.refundTime = refundTime; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Boolean getExceptionStatus() { + return exceptionStatus; + } + + public void setExceptionStatus(Boolean exceptionStatus) { + this.exceptionStatus = exceptionStatus; + } + + public String getExceptionMsg() { + return exceptionMsg; + } + + public void setExceptionMsg(String exceptionMsg) { + this.exceptionMsg = exceptionMsg; + } + + public String getExt1() { + return ext1; + } + + public void setExt1(String ext1) { + this.ext1 = ext1; + } + + public String getExt2() { + return ext2; + } + + public void setExt2(String ext2) { + this.ext2 = ext2; + } + + public String getExt3() { + return ext3; + } + + public void setExt3(String ext3) { + this.ext3 = ext3; + } + + @Override + public boolean equals(Object that) { + if (this == that) { + return true; + } + if (that == null) { + return false; + } + if (getClass() != that.getClass()) { + return false; + } + BsOrderMeituan other = (BsOrderMeituan) that; + return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId())) + && (this.getOrderNo() == null ? other.getOrderNo() == null : this.getOrderNo().equals(other.getOrderNo())) + && (this.getChildOrderNo() == null ? other.getChildOrderNo() == null : this.getChildOrderNo().equals(other.getChildOrderNo())) + && (this.getTradeNo() == null ? other.getTradeNo() == null : this.getTradeNo().equals(other.getTradeNo())) + && (this.getSqtBizOrderId +sqtBizOrderId() == null ? other.getSqtBizOrderId +sqtBizOrderId() == null : this.getSqtBizOrderId +sqtBizOrderId().equals(other.getSqtBizOrderId +sqtBizOrderId())) + && (this.getMerId() == null ? other.getMerId() == null : this.getMerId().equals(other.getMerId())) + && (this.getMerName() == null ? other.getMerName() == null : this.getMerName().equals(other.getMerName())) + && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) + && (this.getUserPhone() == null ? other.getUserPhone() == null : this.getUserPhone().equals(other.getUserPhone())) + && (this.getFirstBusinessType() == null ? other.getFirstBusinessType() == null : this.getFirstBusinessType().equals(other.getFirstBusinessType())) + && (this.getSecondBusinessType() == null ? other.getSecondBusinessType() == null : this.getSecondBusinessType().equals(other.getSecondBusinessType())) + && (this.getEntId() == null ? other.getEntId() == null : this.getEntId().equals(other.getEntId())) + && (this.getImg() == null ? other.getImg() == null : this.getImg().equals(other.getImg())) + && (this.getGoodsName() == null ? other.getGoodsName() == null : this.getGoodsName().equals(other.getGoodsName())) + && (this.getTraceId() == null ? other.getTraceId() == null : this.getTraceId().equals(other.getTraceId())) + && (this.getGoodsCount() == null ? other.getGoodsCount() == null : this.getGoodsCount().equals(other.getGoodsCount())) + && (this.getTotalPrice() == null ? other.getTotalPrice() == null : this.getTotalPrice().equals(other.getTotalPrice())) + && (this.getTotalDeductionPrice() == null ? other.getTotalDeductionPrice() == null : this.getTotalDeductionPrice().equals(other.getTotalDeductionPrice())) + && (this.getCouponDiscountPrice() == null ? other.getCouponDiscountPrice() == null : this.getCouponDiscountPrice().equals(other.getCouponDiscountPrice())) + && (this.getIntegralDiscountPrice() == null ? other.getIntegralDiscountPrice() == null : this.getIntegralDiscountPrice().equals(other.getIntegralDiscountPrice())) + && (this.getPlatformCode() == null ? other.getPlatformCode() == null : this.getPlatformCode().equals(other.getPlatformCode())) + && (this.getPayRealPrice() == null ? other.getPayRealPrice() == null : this.getPayRealPrice().equals(other.getPayRealPrice())) + && (this.getEntPayAmount() == null ? other.getEntPayAmount() == null : this.getEntPayAmount().equals(other.getEntPayAmount())) + && (this.getBusinessDiscountPayAmount() == null ? other.getBusinessDiscountPayAmount() == null : this.getBusinessDiscountPayAmount().equals(other.getBusinessDiscountPayAmount())) + && (this.getServiceFeeAmount() == null ? other.getServiceFeeAmount() == null : this.getServiceFeeAmount().equals(other.getServiceFeeAmount())) + && (this.getPayChannel() == null ? other.getPayChannel() == null : this.getPayChannel().equals(other.getPayChannel())) + && (this.getPaySerialNo() == null ? other.getPaySerialNo() == null : this.getPaySerialNo().equals(other.getPaySerialNo())) + && (this.getPayType() == null ? other.getPayType() == null : this.getPayType().equals(other.getPayType())) + && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus())) + && (this.getMeituanStatus() == null ? other.getMeituanStatus() == null : this.getMeituanStatus().equals(other.getMeituanStatus())) + && (this.getStaffInfo() == null ? other.getStaffInfo() == null : this.getStaffInfo().equals(other.getStaffInfo())) + && (this.getBusinessInfo() == null ? other.getBusinessInfo() == null : this.getBusinessInfo().equals(other.getBusinessInfo())) + && (this.getTradeExpiringTime() == null ? other.getTradeExpiringTime() == null : this.getTradeExpiringTime().equals(other.getTradeExpiringTime())) + && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime())) + && (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime())) + && (this.getCancelTime() == null ? other.getCancelTime() == null : this.getCancelTime().equals(other.getCancelTime())) + && (this.getRefundTime() == null ? other.getRefundTime() == null : this.getRefundTime().equals(other.getRefundTime())) + && (this.getFinishTime() == null ? other.getFinishTime() == null : this.getFinishTime().equals(other.getFinishTime())) + && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime())) + && (this.getExceptionStatus() == null ? other.getExceptionStatus() == null : this.getExceptionStatus().equals(other.getExceptionStatus())) + && (this.getExceptionMsg() == null ? other.getExceptionMsg() == null : this.getExceptionMsg().equals(other.getExceptionMsg())) + && (this.getExt1() == null ? other.getExt1() == null : this.getExt1().equals(other.getExt1())) + && (this.getExt2() == null ? other.getExt2() == null : this.getExt2().equals(other.getExt2())) + && (this.getExt3() == null ? other.getExt3() == null : this.getExt3().equals(other.getExt3())); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((getId() == null) ? 0 : getId().hashCode()); + result = prime * result + ((getOrderNo() == null) ? 0 : getOrderNo().hashCode()); + result = prime * result + ((getChildOrderNo() == null) ? 0 : getChildOrderNo().hashCode()); + result = prime * result + ((getTradeNo() == null) ? 0 : getTradeNo().hashCode()); + result = prime * result + ((getSqtBizOrderId +sqtBizOrderId() == null) ? 0 : getSqtBizOrderId +sqtBizOrderId().hashCode()); + result = prime * result + ((getMerId() == null) ? 0 : getMerId().hashCode()); + result = prime * result + ((getMerName() == null) ? 0 : getMerName().hashCode()); + result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); + result = prime * result + ((getUserPhone() == null) ? 0 : getUserPhone().hashCode()); + result = prime * result + ((getFirstBusinessType() == null) ? 0 : getFirstBusinessType().hashCode()); + result = prime * result + ((getSecondBusinessType() == null) ? 0 : getSecondBusinessType().hashCode()); + result = prime * result + ((getEntId() == null) ? 0 : getEntId().hashCode()); + result = prime * result + ((getImg() == null) ? 0 : getImg().hashCode()); + result = prime * result + ((getGoodsName() == null) ? 0 : getGoodsName().hashCode()); + result = prime * result + ((getTraceId() == null) ? 0 : getTraceId().hashCode()); + result = prime * result + ((getGoodsCount() == null) ? 0 : getGoodsCount().hashCode()); + result = prime * result + ((getTotalPrice() == null) ? 0 : getTotalPrice().hashCode()); + result = prime * result + ((getTotalDeductionPrice() == null) ? 0 : getTotalDeductionPrice().hashCode()); + result = prime * result + ((getCouponDiscountPrice() == null) ? 0 : getCouponDiscountPrice().hashCode()); + result = prime * result + ((getIntegralDiscountPrice() == null) ? 0 : getIntegralDiscountPrice().hashCode()); + result = prime * result + ((getPlatformCode() == null) ? 0 : getPlatformCode().hashCode()); + result = prime * result + ((getPayRealPrice() == null) ? 0 : getPayRealPrice().hashCode()); + result = prime * result + ((getEntPayAmount() == null) ? 0 : getEntPayAmount().hashCode()); + result = prime * result + ((getBusinessDiscountPayAmount() == null) ? 0 : getBusinessDiscountPayAmount().hashCode()); + result = prime * result + ((getServiceFeeAmount() == null) ? 0 : getServiceFeeAmount().hashCode()); + result = prime * result + ((getPayChannel() == null) ? 0 : getPayChannel().hashCode()); + result = prime * result + ((getPaySerialNo() == null) ? 0 : getPaySerialNo().hashCode()); + result = prime * result + ((getPayType() == null) ? 0 : getPayType().hashCode()); + result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode()); + result = prime * result + ((getMeituanStatus() == null) ? 0 : getMeituanStatus().hashCode()); + result = prime * result + ((getStaffInfo() == null) ? 0 : getStaffInfo().hashCode()); + result = prime * result + ((getBusinessInfo() == null) ? 0 : getBusinessInfo().hashCode()); + result = prime * result + ((getTradeExpiringTime() == null) ? 0 : getTradeExpiringTime().hashCode()); + result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode()); + result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode()); + result = prime * result + ((getCancelTime() == null) ? 0 : getCancelTime().hashCode()); + result = prime * result + ((getRefundTime() == null) ? 0 : getRefundTime().hashCode()); + result = prime * result + ((getFinishTime() == null) ? 0 : getFinishTime().hashCode()); + result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode()); + result = prime * result + ((getExceptionStatus() == null) ? 0 : getExceptionStatus().hashCode()); + result = prime * result + ((getExceptionMsg() == null) ? 0 : getExceptionMsg().hashCode()); + result = prime * result + ((getExt1() == null) ? 0 : getExt1().hashCode()); + result = prime * result + ((getExt2() == null) ? 0 : getExt2().hashCode()); + result = prime * result + ((getExt3() == null) ? 0 : getExt3().hashCode()); + return result; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", orderNo=").append(orderNo); + sb.append(", childOrderNo=").append(childOrderNo); + sb.append(", tradeNo=").append(tradeNo); + sb.append(", sqtBizOrderId +sqtBizOrderId=").append(sqtBizOrderId +sqtBizOrderId); + sb.append(", merId=").append(merId); + sb.append(", merName=").append(merName); + sb.append(", userId=").append(userId); + sb.append(", userPhone=").append(userPhone); + sb.append(", firstBusinessType=").append(firstBusinessType); + sb.append(", secondBusinessType=").append(secondBusinessType); + sb.append(", entId=").append(entId); + sb.append(", img=").append(img); + sb.append(", goodsName=").append(goodsName); + sb.append(", traceId=").append(traceId); + sb.append(", goodsCount=").append(goodsCount); + sb.append(", totalPrice=").append(totalPrice); + sb.append(", totalDeductionPrice=").append(totalDeductionPrice); + sb.append(", couponDiscountPrice=").append(couponDiscountPrice); + sb.append(", integralDiscountPrice=").append(integralDiscountPrice); + sb.append(", platformCode=").append(platformCode); + sb.append(", payRealPrice=").append(payRealPrice); + sb.append(", entPayAmount=").append(entPayAmount); + sb.append(", businessDiscountPayAmount=").append(businessDiscountPayAmount); + sb.append(", serviceFeeAmount=").append(serviceFeeAmount); + sb.append(", payChannel=").append(payChannel); + sb.append(", paySerialNo=").append(paySerialNo); + sb.append(", payType=").append(payType); + sb.append(", status=").append(status); + sb.append(", meituanStatus=").append(meituanStatus); + sb.append(", staffInfo=").append(staffInfo); + sb.append(", businessInfo=").append(businessInfo); + sb.append(", tradeExpiringTime=").append(tradeExpiringTime); + sb.append(", createTime=").append(createTime); + sb.append(", payTime=").append(payTime); + sb.append(", cancelTime=").append(cancelTime); + sb.append(", refundTime=").append(refundTime); + sb.append(", finishTime=").append(finishTime); + sb.append(", updateTime=").append(updateTime); + sb.append(", exceptionStatus=").append(exceptionStatus); + sb.append(", exceptionMsg=").append(exceptionMsg); + sb.append(", ext1=").append(ext1); + sb.append(", ext2=").append(ext2); + sb.append(", ext3=").append(ext3); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java new file mode 100644 index 0000000..5398f10 --- /dev/null +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -0,0 +1,3094 @@ +package com.hfkj.entity; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class BsOrderMeituanExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + private Integer limit; + + private Long offset; + + public BsOrderMeituanExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + } + + public void setLimit(Integer limit) { + this.limit = limit; + } + + public Integer getLimit() { + return limit; + } + + public void setOffset(Long offset) { + this.offset = offset; + } + + public Long getOffset() { + return offset; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNull() { + addCriterion("order_no is null"); + return (Criteria) this; + } + + public Criteria andOrderNoIsNotNull() { + addCriterion("order_no is not null"); + return (Criteria) this; + } + + public Criteria andOrderNoEqualTo(String value) { + addCriterion("order_no =", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotEqualTo(String value) { + addCriterion("order_no <>", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThan(String value) { + addCriterion("order_no >", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoGreaterThanOrEqualTo(String value) { + addCriterion("order_no >=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThan(String value) { + addCriterion("order_no <", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLessThanOrEqualTo(String value) { + addCriterion("order_no <=", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoLike(String value) { + addCriterion("order_no like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotLike(String value) { + addCriterion("order_no not like", value, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoIn(List values) { + addCriterion("order_no in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotIn(List values) { + addCriterion("order_no not in", values, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoBetween(String value1, String value2) { + addCriterion("order_no between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andOrderNoNotBetween(String value1, String value2) { + addCriterion("order_no not between", value1, value2, "orderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoIsNull() { + addCriterion("child_order_no is null"); + return (Criteria) this; + } + + public Criteria andChildOrderNoIsNotNull() { + addCriterion("child_order_no is not null"); + return (Criteria) this; + } + + public Criteria andChildOrderNoEqualTo(String value) { + addCriterion("child_order_no =", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoNotEqualTo(String value) { + addCriterion("child_order_no <>", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoGreaterThan(String value) { + addCriterion("child_order_no >", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoGreaterThanOrEqualTo(String value) { + addCriterion("child_order_no >=", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoLessThan(String value) { + addCriterion("child_order_no <", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoLessThanOrEqualTo(String value) { + addCriterion("child_order_no <=", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoLike(String value) { + addCriterion("child_order_no like", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoNotLike(String value) { + addCriterion("child_order_no not like", value, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoIn(List values) { + addCriterion("child_order_no in", values, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoNotIn(List values) { + addCriterion("child_order_no not in", values, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoBetween(String value1, String value2) { + addCriterion("child_order_no between", value1, value2, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andChildOrderNoNotBetween(String value1, String value2) { + addCriterion("child_order_no not between", value1, value2, "childOrderNo"); + return (Criteria) this; + } + + public Criteria andTradeNoIsNull() { + addCriterion("trade_no is null"); + return (Criteria) this; + } + + public Criteria andTradeNoIsNotNull() { + addCriterion("trade_no is not null"); + return (Criteria) this; + } + + public Criteria andTradeNoEqualTo(String value) { + addCriterion("trade_no =", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotEqualTo(String value) { + addCriterion("trade_no <>", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoGreaterThan(String value) { + addCriterion("trade_no >", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoGreaterThanOrEqualTo(String value) { + addCriterion("trade_no >=", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLessThan(String value) { + addCriterion("trade_no <", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLessThanOrEqualTo(String value) { + addCriterion("trade_no <=", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoLike(String value) { + addCriterion("trade_no like", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotLike(String value) { + addCriterion("trade_no not like", value, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoIn(List values) { + addCriterion("trade_no in", values, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotIn(List values) { + addCriterion("trade_no not in", values, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoBetween(String value1, String value2) { + addCriterion("trade_no between", value1, value2, "tradeNo"); + return (Criteria) this; + } + + public Criteria andTradeNoNotBetween(String value1, String value2) { + addCriterion("trade_no not between", value1, value2, "tradeNo"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdIsNull() { + addCriterion("sqt_biz_order_id +sqt_biz_order_id is null"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdIsNotNull() { + addCriterion("sqt_biz_order_id +sqt_biz_order_id is not null"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdEqualTo(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id =", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdNotEqualTo(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id <>", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdGreaterThan(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id >", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdGreaterThanOrEqualTo(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id >=", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdLessThan(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id <", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdLessThanOrEqualTo(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id <=", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdLike(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id like", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdNotLike(String value) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id not like", value, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdIn(List values) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id in", values, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdNotIn(List values) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id not in", values, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdBetween(String value1, String value2) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id between", value1, value2, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andSqtBizOrderId +sqtBizOrderIdNotBetween(String value1, String value2) { + addCriterion("sqt_biz_order_id +sqt_biz_order_id not between", value1, value2, "sqtBizOrderId +sqtBizOrderId"); + return (Criteria) this; + } + + public Criteria andMerIdIsNull() { + addCriterion("mer_id is null"); + return (Criteria) this; + } + + public Criteria andMerIdIsNotNull() { + addCriterion("mer_id is not null"); + return (Criteria) this; + } + + public Criteria andMerIdEqualTo(Long value) { + addCriterion("mer_id =", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdNotEqualTo(Long value) { + addCriterion("mer_id <>", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdGreaterThan(Long value) { + addCriterion("mer_id >", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdGreaterThanOrEqualTo(Long value) { + addCriterion("mer_id >=", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdLessThan(Long value) { + addCriterion("mer_id <", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdLessThanOrEqualTo(Long value) { + addCriterion("mer_id <=", value, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdIn(List values) { + addCriterion("mer_id in", values, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdNotIn(List values) { + addCriterion("mer_id not in", values, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdBetween(Long value1, Long value2) { + addCriterion("mer_id between", value1, value2, "merId"); + return (Criteria) this; + } + + public Criteria andMerIdNotBetween(Long value1, Long value2) { + addCriterion("mer_id not between", value1, value2, "merId"); + return (Criteria) this; + } + + public Criteria andMerNameIsNull() { + addCriterion("mer_name is null"); + return (Criteria) this; + } + + public Criteria andMerNameIsNotNull() { + addCriterion("mer_name is not null"); + return (Criteria) this; + } + + public Criteria andMerNameEqualTo(String value) { + addCriterion("mer_name =", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameNotEqualTo(String value) { + addCriterion("mer_name <>", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameGreaterThan(String value) { + addCriterion("mer_name >", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameGreaterThanOrEqualTo(String value) { + addCriterion("mer_name >=", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameLessThan(String value) { + addCriterion("mer_name <", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameLessThanOrEqualTo(String value) { + addCriterion("mer_name <=", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameLike(String value) { + addCriterion("mer_name like", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameNotLike(String value) { + addCriterion("mer_name not like", value, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameIn(List values) { + addCriterion("mer_name in", values, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameNotIn(List values) { + addCriterion("mer_name not in", values, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameBetween(String value1, String value2) { + addCriterion("mer_name between", value1, value2, "merName"); + return (Criteria) this; + } + + public Criteria andMerNameNotBetween(String value1, String value2) { + addCriterion("mer_name not between", value1, value2, "merName"); + return (Criteria) this; + } + + public Criteria andUserIdIsNull() { + addCriterion("user_id is null"); + return (Criteria) this; + } + + public Criteria andUserIdIsNotNull() { + addCriterion("user_id is not null"); + return (Criteria) this; + } + + public Criteria andUserIdEqualTo(Long value) { + addCriterion("user_id =", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotEqualTo(Long value) { + addCriterion("user_id <>", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThan(Long value) { + addCriterion("user_id >", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdGreaterThanOrEqualTo(Long value) { + addCriterion("user_id >=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThan(Long value) { + addCriterion("user_id <", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdLessThanOrEqualTo(Long value) { + addCriterion("user_id <=", value, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdIn(List values) { + addCriterion("user_id in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotIn(List values) { + addCriterion("user_id not in", values, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdBetween(Long value1, Long value2) { + addCriterion("user_id between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserIdNotBetween(Long value1, Long value2) { + addCriterion("user_id not between", value1, value2, "userId"); + return (Criteria) this; + } + + public Criteria andUserPhoneIsNull() { + addCriterion("user_phone is null"); + return (Criteria) this; + } + + public Criteria andUserPhoneIsNotNull() { + addCriterion("user_phone is not null"); + return (Criteria) this; + } + + public Criteria andUserPhoneEqualTo(String value) { + addCriterion("user_phone =", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneNotEqualTo(String value) { + addCriterion("user_phone <>", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneGreaterThan(String value) { + addCriterion("user_phone >", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneGreaterThanOrEqualTo(String value) { + addCriterion("user_phone >=", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneLessThan(String value) { + addCriterion("user_phone <", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneLessThanOrEqualTo(String value) { + addCriterion("user_phone <=", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneLike(String value) { + addCriterion("user_phone like", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneNotLike(String value) { + addCriterion("user_phone not like", value, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneIn(List values) { + addCriterion("user_phone in", values, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneNotIn(List values) { + addCriterion("user_phone not in", values, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneBetween(String value1, String value2) { + addCriterion("user_phone between", value1, value2, "userPhone"); + return (Criteria) this; + } + + public Criteria andUserPhoneNotBetween(String value1, String value2) { + addCriterion("user_phone not between", value1, value2, "userPhone"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeIsNull() { + addCriterion("first_business_type is null"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeIsNotNull() { + addCriterion("first_business_type is not null"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeEqualTo(String value) { + addCriterion("first_business_type =", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeNotEqualTo(String value) { + addCriterion("first_business_type <>", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeGreaterThan(String value) { + addCriterion("first_business_type >", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeGreaterThanOrEqualTo(String value) { + addCriterion("first_business_type >=", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeLessThan(String value) { + addCriterion("first_business_type <", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeLessThanOrEqualTo(String value) { + addCriterion("first_business_type <=", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeLike(String value) { + addCriterion("first_business_type like", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeNotLike(String value) { + addCriterion("first_business_type not like", value, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeIn(List values) { + addCriterion("first_business_type in", values, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeNotIn(List values) { + addCriterion("first_business_type not in", values, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeBetween(String value1, String value2) { + addCriterion("first_business_type between", value1, value2, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andFirstBusinessTypeNotBetween(String value1, String value2) { + addCriterion("first_business_type not between", value1, value2, "firstBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeIsNull() { + addCriterion("second_business_type is null"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeIsNotNull() { + addCriterion("second_business_type is not null"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeEqualTo(String value) { + addCriterion("second_business_type =", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeNotEqualTo(String value) { + addCriterion("second_business_type <>", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeGreaterThan(String value) { + addCriterion("second_business_type >", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeGreaterThanOrEqualTo(String value) { + addCriterion("second_business_type >=", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeLessThan(String value) { + addCriterion("second_business_type <", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeLessThanOrEqualTo(String value) { + addCriterion("second_business_type <=", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeLike(String value) { + addCriterion("second_business_type like", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeNotLike(String value) { + addCriterion("second_business_type not like", value, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeIn(List values) { + addCriterion("second_business_type in", values, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeNotIn(List values) { + addCriterion("second_business_type not in", values, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeBetween(String value1, String value2) { + addCriterion("second_business_type between", value1, value2, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andSecondBusinessTypeNotBetween(String value1, String value2) { + addCriterion("second_business_type not between", value1, value2, "secondBusinessType"); + return (Criteria) this; + } + + public Criteria andEntIdIsNull() { + addCriterion("ent_id is null"); + return (Criteria) this; + } + + public Criteria andEntIdIsNotNull() { + addCriterion("ent_id is not null"); + return (Criteria) this; + } + + public Criteria andEntIdEqualTo(Long value) { + addCriterion("ent_id =", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdNotEqualTo(Long value) { + addCriterion("ent_id <>", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdGreaterThan(Long value) { + addCriterion("ent_id >", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdGreaterThanOrEqualTo(Long value) { + addCriterion("ent_id >=", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdLessThan(Long value) { + addCriterion("ent_id <", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdLessThanOrEqualTo(Long value) { + addCriterion("ent_id <=", value, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdIn(List values) { + addCriterion("ent_id in", values, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdNotIn(List values) { + addCriterion("ent_id not in", values, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdBetween(Long value1, Long value2) { + addCriterion("ent_id between", value1, value2, "entId"); + return (Criteria) this; + } + + public Criteria andEntIdNotBetween(Long value1, Long value2) { + addCriterion("ent_id not between", value1, value2, "entId"); + return (Criteria) this; + } + + public Criteria andImgIsNull() { + addCriterion("img is null"); + return (Criteria) this; + } + + public Criteria andImgIsNotNull() { + addCriterion("img is not null"); + return (Criteria) this; + } + + public Criteria andImgEqualTo(String value) { + addCriterion("img =", value, "img"); + return (Criteria) this; + } + + public Criteria andImgNotEqualTo(String value) { + addCriterion("img <>", value, "img"); + return (Criteria) this; + } + + public Criteria andImgGreaterThan(String value) { + addCriterion("img >", value, "img"); + return (Criteria) this; + } + + public Criteria andImgGreaterThanOrEqualTo(String value) { + addCriterion("img >=", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLessThan(String value) { + addCriterion("img <", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLessThanOrEqualTo(String value) { + addCriterion("img <=", value, "img"); + return (Criteria) this; + } + + public Criteria andImgLike(String value) { + addCriterion("img like", value, "img"); + return (Criteria) this; + } + + public Criteria andImgNotLike(String value) { + addCriterion("img not like", value, "img"); + return (Criteria) this; + } + + public Criteria andImgIn(List values) { + addCriterion("img in", values, "img"); + return (Criteria) this; + } + + public Criteria andImgNotIn(List values) { + addCriterion("img not in", values, "img"); + return (Criteria) this; + } + + public Criteria andImgBetween(String value1, String value2) { + addCriterion("img between", value1, value2, "img"); + return (Criteria) this; + } + + public Criteria andImgNotBetween(String value1, String value2) { + addCriterion("img not between", value1, value2, "img"); + return (Criteria) this; + } + + public Criteria andGoodsNameIsNull() { + addCriterion("goods_name is null"); + return (Criteria) this; + } + + public Criteria andGoodsNameIsNotNull() { + addCriterion("goods_name is not null"); + return (Criteria) this; + } + + public Criteria andGoodsNameEqualTo(String value) { + addCriterion("goods_name =", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameNotEqualTo(String value) { + addCriterion("goods_name <>", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameGreaterThan(String value) { + addCriterion("goods_name >", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameGreaterThanOrEqualTo(String value) { + addCriterion("goods_name >=", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameLessThan(String value) { + addCriterion("goods_name <", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameLessThanOrEqualTo(String value) { + addCriterion("goods_name <=", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameLike(String value) { + addCriterion("goods_name like", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameNotLike(String value) { + addCriterion("goods_name not like", value, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameIn(List values) { + addCriterion("goods_name in", values, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameNotIn(List values) { + addCriterion("goods_name not in", values, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameBetween(String value1, String value2) { + addCriterion("goods_name between", value1, value2, "goodsName"); + return (Criteria) this; + } + + public Criteria andGoodsNameNotBetween(String value1, String value2) { + addCriterion("goods_name not between", value1, value2, "goodsName"); + return (Criteria) this; + } + + public Criteria andTraceIdIsNull() { + addCriterion("trace_id is null"); + return (Criteria) this; + } + + public Criteria andTraceIdIsNotNull() { + addCriterion("trace_id is not null"); + return (Criteria) this; + } + + public Criteria andTraceIdEqualTo(String value) { + addCriterion("trace_id =", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdNotEqualTo(String value) { + addCriterion("trace_id <>", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdGreaterThan(String value) { + addCriterion("trace_id >", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdGreaterThanOrEqualTo(String value) { + addCriterion("trace_id >=", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdLessThan(String value) { + addCriterion("trace_id <", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdLessThanOrEqualTo(String value) { + addCriterion("trace_id <=", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdLike(String value) { + addCriterion("trace_id like", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdNotLike(String value) { + addCriterion("trace_id not like", value, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdIn(List values) { + addCriterion("trace_id in", values, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdNotIn(List values) { + addCriterion("trace_id not in", values, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdBetween(String value1, String value2) { + addCriterion("trace_id between", value1, value2, "traceId"); + return (Criteria) this; + } + + public Criteria andTraceIdNotBetween(String value1, String value2) { + addCriterion("trace_id not between", value1, value2, "traceId"); + return (Criteria) this; + } + + public Criteria andGoodsCountIsNull() { + addCriterion("goods_count is null"); + return (Criteria) this; + } + + public Criteria andGoodsCountIsNotNull() { + addCriterion("goods_count is not null"); + return (Criteria) this; + } + + public Criteria andGoodsCountEqualTo(Integer value) { + addCriterion("goods_count =", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountNotEqualTo(Integer value) { + addCriterion("goods_count <>", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountGreaterThan(Integer value) { + addCriterion("goods_count >", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountGreaterThanOrEqualTo(Integer value) { + addCriterion("goods_count >=", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountLessThan(Integer value) { + addCriterion("goods_count <", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountLessThanOrEqualTo(Integer value) { + addCriterion("goods_count <=", value, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountIn(List values) { + addCriterion("goods_count in", values, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountNotIn(List values) { + addCriterion("goods_count not in", values, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountBetween(Integer value1, Integer value2) { + addCriterion("goods_count between", value1, value2, "goodsCount"); + return (Criteria) this; + } + + public Criteria andGoodsCountNotBetween(Integer value1, Integer value2) { + addCriterion("goods_count not between", value1, value2, "goodsCount"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNull() { + addCriterion("total_price is null"); + return (Criteria) this; + } + + public Criteria andTotalPriceIsNotNull() { + addCriterion("total_price is not null"); + return (Criteria) this; + } + + public Criteria andTotalPriceEqualTo(BigDecimal value) { + addCriterion("total_price =", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotEqualTo(BigDecimal value) { + addCriterion("total_price <>", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThan(BigDecimal value) { + addCriterion("total_price >", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("total_price >=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThan(BigDecimal value) { + addCriterion("total_price <", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("total_price <=", value, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceIn(List values) { + addCriterion("total_price in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotIn(List values) { + addCriterion("total_price not in", values, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_price not between", value1, value2, "totalPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceIsNull() { + addCriterion("total_deduction_price is null"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceIsNotNull() { + addCriterion("total_deduction_price is not null"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceEqualTo(BigDecimal value) { + addCriterion("total_deduction_price =", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceNotEqualTo(BigDecimal value) { + addCriterion("total_deduction_price <>", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceGreaterThan(BigDecimal value) { + addCriterion("total_deduction_price >", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("total_deduction_price >=", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceLessThan(BigDecimal value) { + addCriterion("total_deduction_price <", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("total_deduction_price <=", value, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceIn(List values) { + addCriterion("total_deduction_price in", values, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceNotIn(List values) { + addCriterion("total_deduction_price not in", values, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_deduction_price between", value1, value2, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andTotalDeductionPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("total_deduction_price not between", value1, value2, "totalDeductionPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceIsNull() { + addCriterion("coupon_discount_price is null"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceIsNotNull() { + addCriterion("coupon_discount_price is not null"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceEqualTo(BigDecimal value) { + addCriterion("coupon_discount_price =", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceNotEqualTo(BigDecimal value) { + addCriterion("coupon_discount_price <>", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceGreaterThan(BigDecimal value) { + addCriterion("coupon_discount_price >", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("coupon_discount_price >=", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceLessThan(BigDecimal value) { + addCriterion("coupon_discount_price <", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("coupon_discount_price <=", value, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceIn(List values) { + addCriterion("coupon_discount_price in", values, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceNotIn(List values) { + addCriterion("coupon_discount_price not in", values, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("coupon_discount_price between", value1, value2, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andCouponDiscountPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("coupon_discount_price not between", value1, value2, "couponDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceIsNull() { + addCriterion("integral_discount_price is null"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceIsNotNull() { + addCriterion("integral_discount_price is not null"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceEqualTo(Long value) { + addCriterion("integral_discount_price =", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceNotEqualTo(Long value) { + addCriterion("integral_discount_price <>", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceGreaterThan(Long value) { + addCriterion("integral_discount_price >", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceGreaterThanOrEqualTo(Long value) { + addCriterion("integral_discount_price >=", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceLessThan(Long value) { + addCriterion("integral_discount_price <", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceLessThanOrEqualTo(Long value) { + addCriterion("integral_discount_price <=", value, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceIn(List values) { + addCriterion("integral_discount_price in", values, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceNotIn(List values) { + addCriterion("integral_discount_price not in", values, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceBetween(Long value1, Long value2) { + addCriterion("integral_discount_price between", value1, value2, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andIntegralDiscountPriceNotBetween(Long value1, Long value2) { + addCriterion("integral_discount_price not between", value1, value2, "integralDiscountPrice"); + return (Criteria) this; + } + + public Criteria andPlatformCodeIsNull() { + addCriterion("platform_code is null"); + return (Criteria) this; + } + + public Criteria andPlatformCodeIsNotNull() { + addCriterion("platform_code is not null"); + return (Criteria) this; + } + + public Criteria andPlatformCodeEqualTo(String value) { + addCriterion("platform_code =", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeNotEqualTo(String value) { + addCriterion("platform_code <>", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeGreaterThan(String value) { + addCriterion("platform_code >", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeGreaterThanOrEqualTo(String value) { + addCriterion("platform_code >=", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeLessThan(String value) { + addCriterion("platform_code <", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeLessThanOrEqualTo(String value) { + addCriterion("platform_code <=", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeLike(String value) { + addCriterion("platform_code like", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeNotLike(String value) { + addCriterion("platform_code not like", value, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeIn(List values) { + addCriterion("platform_code in", values, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeNotIn(List values) { + addCriterion("platform_code not in", values, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeBetween(String value1, String value2) { + addCriterion("platform_code between", value1, value2, "platformCode"); + return (Criteria) this; + } + + public Criteria andPlatformCodeNotBetween(String value1, String value2) { + addCriterion("platform_code not between", value1, value2, "platformCode"); + return (Criteria) this; + } + + public Criteria andPayRealPriceIsNull() { + addCriterion("pay_real_price is null"); + return (Criteria) this; + } + + public Criteria andPayRealPriceIsNotNull() { + addCriterion("pay_real_price is not null"); + return (Criteria) this; + } + + public Criteria andPayRealPriceEqualTo(BigDecimal value) { + addCriterion("pay_real_price =", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceNotEqualTo(BigDecimal value) { + addCriterion("pay_real_price <>", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceGreaterThan(BigDecimal value) { + addCriterion("pay_real_price >", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("pay_real_price >=", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceLessThan(BigDecimal value) { + addCriterion("pay_real_price <", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("pay_real_price <=", value, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceIn(List values) { + addCriterion("pay_real_price in", values, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceNotIn(List values) { + addCriterion("pay_real_price not in", values, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("pay_real_price between", value1, value2, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andPayRealPriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("pay_real_price not between", value1, value2, "payRealPrice"); + return (Criteria) this; + } + + public Criteria andEntPayAmountIsNull() { + addCriterion("ent_pay_amount is null"); + return (Criteria) this; + } + + public Criteria andEntPayAmountIsNotNull() { + addCriterion("ent_pay_amount is not null"); + return (Criteria) this; + } + + public Criteria andEntPayAmountEqualTo(BigDecimal value) { + addCriterion("ent_pay_amount =", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountNotEqualTo(BigDecimal value) { + addCriterion("ent_pay_amount <>", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountGreaterThan(BigDecimal value) { + addCriterion("ent_pay_amount >", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("ent_pay_amount >=", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountLessThan(BigDecimal value) { + addCriterion("ent_pay_amount <", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("ent_pay_amount <=", value, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountIn(List values) { + addCriterion("ent_pay_amount in", values, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountNotIn(List values) { + addCriterion("ent_pay_amount not in", values, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ent_pay_amount between", value1, value2, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andEntPayAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("ent_pay_amount not between", value1, value2, "entPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountIsNull() { + addCriterion("business_discount_pay_amount is null"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountIsNotNull() { + addCriterion("business_discount_pay_amount is not null"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountEqualTo(BigDecimal value) { + addCriterion("business_discount_pay_amount =", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountNotEqualTo(BigDecimal value) { + addCriterion("business_discount_pay_amount <>", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountGreaterThan(BigDecimal value) { + addCriterion("business_discount_pay_amount >", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("business_discount_pay_amount >=", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountLessThan(BigDecimal value) { + addCriterion("business_discount_pay_amount <", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("business_discount_pay_amount <=", value, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountIn(List values) { + addCriterion("business_discount_pay_amount in", values, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountNotIn(List values) { + addCriterion("business_discount_pay_amount not in", values, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("business_discount_pay_amount between", value1, value2, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andBusinessDiscountPayAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("business_discount_pay_amount not between", value1, value2, "businessDiscountPayAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountIsNull() { + addCriterion("service_fee_amount is null"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountIsNotNull() { + addCriterion("service_fee_amount is not null"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountEqualTo(BigDecimal value) { + addCriterion("service_fee_amount =", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountNotEqualTo(BigDecimal value) { + addCriterion("service_fee_amount <>", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountGreaterThan(BigDecimal value) { + addCriterion("service_fee_amount >", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("service_fee_amount >=", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountLessThan(BigDecimal value) { + addCriterion("service_fee_amount <", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("service_fee_amount <=", value, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountIn(List values) { + addCriterion("service_fee_amount in", values, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountNotIn(List values) { + addCriterion("service_fee_amount not in", values, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("service_fee_amount between", value1, value2, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andServiceFeeAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("service_fee_amount not between", value1, value2, "serviceFeeAmount"); + return (Criteria) this; + } + + public Criteria andPayChannelIsNull() { + addCriterion("pay_channel is null"); + return (Criteria) this; + } + + public Criteria andPayChannelIsNotNull() { + addCriterion("pay_channel is not null"); + return (Criteria) this; + } + + public Criteria andPayChannelEqualTo(Integer value) { + addCriterion("pay_channel =", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelNotEqualTo(Integer value) { + addCriterion("pay_channel <>", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelGreaterThan(Integer value) { + addCriterion("pay_channel >", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelGreaterThanOrEqualTo(Integer value) { + addCriterion("pay_channel >=", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelLessThan(Integer value) { + addCriterion("pay_channel <", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelLessThanOrEqualTo(Integer value) { + addCriterion("pay_channel <=", value, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelIn(List values) { + addCriterion("pay_channel in", values, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelNotIn(List values) { + addCriterion("pay_channel not in", values, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelBetween(Integer value1, Integer value2) { + addCriterion("pay_channel between", value1, value2, "payChannel"); + return (Criteria) this; + } + + public Criteria andPayChannelNotBetween(Integer value1, Integer value2) { + addCriterion("pay_channel not between", value1, value2, "payChannel"); + return (Criteria) this; + } + + public Criteria andPaySerialNoIsNull() { + addCriterion("pay_serial_no is null"); + return (Criteria) this; + } + + public Criteria andPaySerialNoIsNotNull() { + addCriterion("pay_serial_no is not null"); + return (Criteria) this; + } + + public Criteria andPaySerialNoEqualTo(String value) { + addCriterion("pay_serial_no =", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoNotEqualTo(String value) { + addCriterion("pay_serial_no <>", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoGreaterThan(String value) { + addCriterion("pay_serial_no >", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoGreaterThanOrEqualTo(String value) { + addCriterion("pay_serial_no >=", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoLessThan(String value) { + addCriterion("pay_serial_no <", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoLessThanOrEqualTo(String value) { + addCriterion("pay_serial_no <=", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoLike(String value) { + addCriterion("pay_serial_no like", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoNotLike(String value) { + addCriterion("pay_serial_no not like", value, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoIn(List values) { + addCriterion("pay_serial_no in", values, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoNotIn(List values) { + addCriterion("pay_serial_no not in", values, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoBetween(String value1, String value2) { + addCriterion("pay_serial_no between", value1, value2, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPaySerialNoNotBetween(String value1, String value2) { + addCriterion("pay_serial_no not between", value1, value2, "paySerialNo"); + return (Criteria) this; + } + + public Criteria andPayTypeIsNull() { + addCriterion("pay_type is null"); + return (Criteria) this; + } + + public Criteria andPayTypeIsNotNull() { + addCriterion("pay_type is not null"); + return (Criteria) this; + } + + public Criteria andPayTypeEqualTo(Integer value) { + addCriterion("pay_type =", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotEqualTo(Integer value) { + addCriterion("pay_type <>", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeGreaterThan(Integer value) { + addCriterion("pay_type >", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeGreaterThanOrEqualTo(Integer value) { + addCriterion("pay_type >=", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeLessThan(Integer value) { + addCriterion("pay_type <", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeLessThanOrEqualTo(Integer value) { + addCriterion("pay_type <=", value, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeIn(List values) { + addCriterion("pay_type in", values, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotIn(List values) { + addCriterion("pay_type not in", values, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeBetween(Integer value1, Integer value2) { + addCriterion("pay_type between", value1, value2, "payType"); + return (Criteria) this; + } + + public Criteria andPayTypeNotBetween(Integer value1, Integer value2) { + addCriterion("pay_type not between", value1, value2, "payType"); + return (Criteria) this; + } + + public Criteria andStatusIsNull() { + addCriterion("`status` is null"); + return (Criteria) this; + } + + public Criteria andStatusIsNotNull() { + addCriterion("`status` is not null"); + return (Criteria) this; + } + + public Criteria andStatusEqualTo(Integer value) { + addCriterion("`status` =", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotEqualTo(Integer value) { + addCriterion("`status` <>", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThan(Integer value) { + addCriterion("`status` >", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("`status` >=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThan(Integer value) { + addCriterion("`status` <", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusLessThanOrEqualTo(Integer value) { + addCriterion("`status` <=", value, "status"); + return (Criteria) this; + } + + public Criteria andStatusIn(List values) { + addCriterion("`status` in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotIn(List values) { + addCriterion("`status` not in", values, "status"); + return (Criteria) this; + } + + public Criteria andStatusBetween(Integer value1, Integer value2) { + addCriterion("`status` between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andStatusNotBetween(Integer value1, Integer value2) { + addCriterion("`status` not between", value1, value2, "status"); + return (Criteria) this; + } + + public Criteria andMeituanStatusIsNull() { + addCriterion("meituan_status is null"); + return (Criteria) this; + } + + public Criteria andMeituanStatusIsNotNull() { + addCriterion("meituan_status is not null"); + return (Criteria) this; + } + + public Criteria andMeituanStatusEqualTo(Integer value) { + addCriterion("meituan_status =", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusNotEqualTo(Integer value) { + addCriterion("meituan_status <>", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusGreaterThan(Integer value) { + addCriterion("meituan_status >", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("meituan_status >=", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusLessThan(Integer value) { + addCriterion("meituan_status <", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusLessThanOrEqualTo(Integer value) { + addCriterion("meituan_status <=", value, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusIn(List values) { + addCriterion("meituan_status in", values, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusNotIn(List values) { + addCriterion("meituan_status not in", values, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusBetween(Integer value1, Integer value2) { + addCriterion("meituan_status between", value1, value2, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andMeituanStatusNotBetween(Integer value1, Integer value2) { + addCriterion("meituan_status not between", value1, value2, "meituanStatus"); + return (Criteria) this; + } + + public Criteria andStaffInfoIsNull() { + addCriterion("staff_info is null"); + return (Criteria) this; + } + + public Criteria andStaffInfoIsNotNull() { + addCriterion("staff_info is not null"); + return (Criteria) this; + } + + public Criteria andStaffInfoEqualTo(String value) { + addCriterion("staff_info =", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoNotEqualTo(String value) { + addCriterion("staff_info <>", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoGreaterThan(String value) { + addCriterion("staff_info >", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoGreaterThanOrEqualTo(String value) { + addCriterion("staff_info >=", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoLessThan(String value) { + addCriterion("staff_info <", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoLessThanOrEqualTo(String value) { + addCriterion("staff_info <=", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoLike(String value) { + addCriterion("staff_info like", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoNotLike(String value) { + addCriterion("staff_info not like", value, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoIn(List values) { + addCriterion("staff_info in", values, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoNotIn(List values) { + addCriterion("staff_info not in", values, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoBetween(String value1, String value2) { + addCriterion("staff_info between", value1, value2, "staffInfo"); + return (Criteria) this; + } + + public Criteria andStaffInfoNotBetween(String value1, String value2) { + addCriterion("staff_info not between", value1, value2, "staffInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoIsNull() { + addCriterion("business_info is null"); + return (Criteria) this; + } + + public Criteria andBusinessInfoIsNotNull() { + addCriterion("business_info is not null"); + return (Criteria) this; + } + + public Criteria andBusinessInfoEqualTo(String value) { + addCriterion("business_info =", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoNotEqualTo(String value) { + addCriterion("business_info <>", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoGreaterThan(String value) { + addCriterion("business_info >", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoGreaterThanOrEqualTo(String value) { + addCriterion("business_info >=", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoLessThan(String value) { + addCriterion("business_info <", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoLessThanOrEqualTo(String value) { + addCriterion("business_info <=", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoLike(String value) { + addCriterion("business_info like", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoNotLike(String value) { + addCriterion("business_info not like", value, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoIn(List values) { + addCriterion("business_info in", values, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoNotIn(List values) { + addCriterion("business_info not in", values, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoBetween(String value1, String value2) { + addCriterion("business_info between", value1, value2, "businessInfo"); + return (Criteria) this; + } + + public Criteria andBusinessInfoNotBetween(String value1, String value2) { + addCriterion("business_info not between", value1, value2, "businessInfo"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeIsNull() { + addCriterion("trade_expiring_time is null"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeIsNotNull() { + addCriterion("trade_expiring_time is not null"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeEqualTo(Date value) { + addCriterion("trade_expiring_time =", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeNotEqualTo(Date value) { + addCriterion("trade_expiring_time <>", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeGreaterThan(Date value) { + addCriterion("trade_expiring_time >", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeGreaterThanOrEqualTo(Date value) { + addCriterion("trade_expiring_time >=", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeLessThan(Date value) { + addCriterion("trade_expiring_time <", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeLessThanOrEqualTo(Date value) { + addCriterion("trade_expiring_time <=", value, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeIn(List values) { + addCriterion("trade_expiring_time in", values, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeNotIn(List values) { + addCriterion("trade_expiring_time not in", values, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeBetween(Date value1, Date value2) { + addCriterion("trade_expiring_time between", value1, value2, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andTradeExpiringTimeNotBetween(Date value1, Date value2) { + addCriterion("trade_expiring_time not between", value1, value2, "tradeExpiringTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andPayTimeIsNull() { + addCriterion("pay_time is null"); + return (Criteria) this; + } + + public Criteria andPayTimeIsNotNull() { + addCriterion("pay_time is not null"); + return (Criteria) this; + } + + public Criteria andPayTimeEqualTo(Date value) { + addCriterion("pay_time =", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeNotEqualTo(Date value) { + addCriterion("pay_time <>", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeGreaterThan(Date value) { + addCriterion("pay_time >", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeGreaterThanOrEqualTo(Date value) { + addCriterion("pay_time >=", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeLessThan(Date value) { + addCriterion("pay_time <", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeLessThanOrEqualTo(Date value) { + addCriterion("pay_time <=", value, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeIn(List values) { + addCriterion("pay_time in", values, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeNotIn(List values) { + addCriterion("pay_time not in", values, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeBetween(Date value1, Date value2) { + addCriterion("pay_time between", value1, value2, "payTime"); + return (Criteria) this; + } + + public Criteria andPayTimeNotBetween(Date value1, Date value2) { + addCriterion("pay_time not between", value1, value2, "payTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeIsNull() { + addCriterion("cancel_time is null"); + return (Criteria) this; + } + + public Criteria andCancelTimeIsNotNull() { + addCriterion("cancel_time is not null"); + return (Criteria) this; + } + + public Criteria andCancelTimeEqualTo(Date value) { + addCriterion("cancel_time =", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeNotEqualTo(Date value) { + addCriterion("cancel_time <>", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeGreaterThan(Date value) { + addCriterion("cancel_time >", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeGreaterThanOrEqualTo(Date value) { + addCriterion("cancel_time >=", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeLessThan(Date value) { + addCriterion("cancel_time <", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeLessThanOrEqualTo(Date value) { + addCriterion("cancel_time <=", value, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeIn(List values) { + addCriterion("cancel_time in", values, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeNotIn(List values) { + addCriterion("cancel_time not in", values, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeBetween(Date value1, Date value2) { + addCriterion("cancel_time between", value1, value2, "cancelTime"); + return (Criteria) this; + } + + public Criteria andCancelTimeNotBetween(Date value1, Date value2) { + addCriterion("cancel_time not between", value1, value2, "cancelTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeIsNull() { + addCriterion("refund_time is null"); + return (Criteria) this; + } + + public Criteria andRefundTimeIsNotNull() { + addCriterion("refund_time is not null"); + return (Criteria) this; + } + + public Criteria andRefundTimeEqualTo(Date value) { + addCriterion("refund_time =", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeNotEqualTo(Date value) { + addCriterion("refund_time <>", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeGreaterThan(Date value) { + addCriterion("refund_time >", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeGreaterThanOrEqualTo(Date value) { + addCriterion("refund_time >=", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeLessThan(Date value) { + addCriterion("refund_time <", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeLessThanOrEqualTo(Date value) { + addCriterion("refund_time <=", value, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeIn(List values) { + addCriterion("refund_time in", values, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeNotIn(List values) { + addCriterion("refund_time not in", values, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeBetween(Date value1, Date value2) { + addCriterion("refund_time between", value1, value2, "refundTime"); + return (Criteria) this; + } + + public Criteria andRefundTimeNotBetween(Date value1, Date value2) { + addCriterion("refund_time not between", value1, value2, "refundTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeIsNull() { + addCriterion("finish_time is null"); + return (Criteria) this; + } + + public Criteria andFinishTimeIsNotNull() { + addCriterion("finish_time is not null"); + return (Criteria) this; + } + + public Criteria andFinishTimeEqualTo(Date value) { + addCriterion("finish_time =", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeNotEqualTo(Date value) { + addCriterion("finish_time <>", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeGreaterThan(Date value) { + addCriterion("finish_time >", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeGreaterThanOrEqualTo(Date value) { + addCriterion("finish_time >=", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeLessThan(Date value) { + addCriterion("finish_time <", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeLessThanOrEqualTo(Date value) { + addCriterion("finish_time <=", value, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeIn(List values) { + addCriterion("finish_time in", values, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeNotIn(List values) { + addCriterion("finish_time not in", values, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeBetween(Date value1, Date value2) { + addCriterion("finish_time between", value1, value2, "finishTime"); + return (Criteria) this; + } + + public Criteria andFinishTimeNotBetween(Date value1, Date value2) { + addCriterion("finish_time not between", value1, value2, "finishTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andExceptionStatusIsNull() { + addCriterion("exception_status is null"); + return (Criteria) this; + } + + public Criteria andExceptionStatusIsNotNull() { + addCriterion("exception_status is not null"); + return (Criteria) this; + } + + public Criteria andExceptionStatusEqualTo(Boolean value) { + addCriterion("exception_status =", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusNotEqualTo(Boolean value) { + addCriterion("exception_status <>", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusGreaterThan(Boolean value) { + addCriterion("exception_status >", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusGreaterThanOrEqualTo(Boolean value) { + addCriterion("exception_status >=", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusLessThan(Boolean value) { + addCriterion("exception_status <", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusLessThanOrEqualTo(Boolean value) { + addCriterion("exception_status <=", value, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusIn(List values) { + addCriterion("exception_status in", values, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusNotIn(List values) { + addCriterion("exception_status not in", values, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusBetween(Boolean value1, Boolean value2) { + addCriterion("exception_status between", value1, value2, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionStatusNotBetween(Boolean value1, Boolean value2) { + addCriterion("exception_status not between", value1, value2, "exceptionStatus"); + return (Criteria) this; + } + + public Criteria andExceptionMsgIsNull() { + addCriterion("exception_msg is null"); + return (Criteria) this; + } + + public Criteria andExceptionMsgIsNotNull() { + addCriterion("exception_msg is not null"); + return (Criteria) this; + } + + public Criteria andExceptionMsgEqualTo(String value) { + addCriterion("exception_msg =", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgNotEqualTo(String value) { + addCriterion("exception_msg <>", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgGreaterThan(String value) { + addCriterion("exception_msg >", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgGreaterThanOrEqualTo(String value) { + addCriterion("exception_msg >=", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgLessThan(String value) { + addCriterion("exception_msg <", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgLessThanOrEqualTo(String value) { + addCriterion("exception_msg <=", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgLike(String value) { + addCriterion("exception_msg like", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgNotLike(String value) { + addCriterion("exception_msg not like", value, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgIn(List values) { + addCriterion("exception_msg in", values, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgNotIn(List values) { + addCriterion("exception_msg not in", values, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgBetween(String value1, String value2) { + addCriterion("exception_msg between", value1, value2, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExceptionMsgNotBetween(String value1, String value2) { + addCriterion("exception_msg not between", value1, value2, "exceptionMsg"); + return (Criteria) this; + } + + public Criteria andExt1IsNull() { + addCriterion("ext_1 is null"); + return (Criteria) this; + } + + public Criteria andExt1IsNotNull() { + addCriterion("ext_1 is not null"); + return (Criteria) this; + } + + public Criteria andExt1EqualTo(String value) { + addCriterion("ext_1 =", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotEqualTo(String value) { + addCriterion("ext_1 <>", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1GreaterThan(String value) { + addCriterion("ext_1 >", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1GreaterThanOrEqualTo(String value) { + addCriterion("ext_1 >=", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1LessThan(String value) { + addCriterion("ext_1 <", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1LessThanOrEqualTo(String value) { + addCriterion("ext_1 <=", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1Like(String value) { + addCriterion("ext_1 like", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotLike(String value) { + addCriterion("ext_1 not like", value, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1In(List values) { + addCriterion("ext_1 in", values, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotIn(List values) { + addCriterion("ext_1 not in", values, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1Between(String value1, String value2) { + addCriterion("ext_1 between", value1, value2, "ext1"); + return (Criteria) this; + } + + public Criteria andExt1NotBetween(String value1, String value2) { + addCriterion("ext_1 not between", value1, value2, "ext1"); + return (Criteria) this; + } + + public Criteria andExt2IsNull() { + addCriterion("ext_2 is null"); + return (Criteria) this; + } + + public Criteria andExt2IsNotNull() { + addCriterion("ext_2 is not null"); + return (Criteria) this; + } + + public Criteria andExt2EqualTo(String value) { + addCriterion("ext_2 =", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotEqualTo(String value) { + addCriterion("ext_2 <>", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2GreaterThan(String value) { + addCriterion("ext_2 >", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2GreaterThanOrEqualTo(String value) { + addCriterion("ext_2 >=", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2LessThan(String value) { + addCriterion("ext_2 <", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2LessThanOrEqualTo(String value) { + addCriterion("ext_2 <=", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2Like(String value) { + addCriterion("ext_2 like", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotLike(String value) { + addCriterion("ext_2 not like", value, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2In(List values) { + addCriterion("ext_2 in", values, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotIn(List values) { + addCriterion("ext_2 not in", values, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2Between(String value1, String value2) { + addCriterion("ext_2 between", value1, value2, "ext2"); + return (Criteria) this; + } + + public Criteria andExt2NotBetween(String value1, String value2) { + addCriterion("ext_2 not between", value1, value2, "ext2"); + return (Criteria) this; + } + + public Criteria andExt3IsNull() { + addCriterion("ext_3 is null"); + return (Criteria) this; + } + + public Criteria andExt3IsNotNull() { + addCriterion("ext_3 is not null"); + return (Criteria) this; + } + + public Criteria andExt3EqualTo(String value) { + addCriterion("ext_3 =", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotEqualTo(String value) { + addCriterion("ext_3 <>", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3GreaterThan(String value) { + addCriterion("ext_3 >", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3GreaterThanOrEqualTo(String value) { + addCriterion("ext_3 >=", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3LessThan(String value) { + addCriterion("ext_3 <", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3LessThanOrEqualTo(String value) { + addCriterion("ext_3 <=", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3Like(String value) { + addCriterion("ext_3 like", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotLike(String value) { + addCriterion("ext_3 not like", value, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3In(List values) { + addCriterion("ext_3 in", values, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotIn(List values) { + addCriterion("ext_3 not in", values, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3Between(String value1, String value2) { + addCriterion("ext_3 between", value1, value2, "ext3"); + return (Criteria) this; + } + + public Criteria andExt3NotBetween(String value1, String value2) { + addCriterion("ext_3 not between", value1, value2, "ext3"); + return (Criteria) this; + } + } + + /** + */ + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file From 14865243d3e8ed1735f8f8acf67f0c052f7a2e1a Mon Sep 17 00:00:00 2001 From: yuanye <418471657@qq.com> Date: Fri, 13 Sep 2024 17:39:46 +0800 Subject: [PATCH 3/8] /1 --- order/lib/open-platform-sdk-1.0.21.jar | Bin 0 -> 264820 bytes order/pom.xml | 7 ++ .../com/order/controller/OrderController.java | 8 +- .../business/BsOrderCinemaController.java | 1 - .../business/BsOrderGoodsController.java | 3 + .../controller/notify/MeiTuanController.java | 71 ++++++++++++++++++ .../com/hfkj/schedule/OrderGoodsSchedule.java | 3 - .../java/com/hfkj/meituan/MeiTuanService.java | 2 - .../goods/impl/BsOrderGoodsServiceImpl.java | 3 + .../resources/prod/commonConfig.properties | 5 ++ 10 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 order/lib/open-platform-sdk-1.0.21.jar create mode 100644 order/src/main/java/com/order/controller/notify/MeiTuanController.java diff --git a/order/lib/open-platform-sdk-1.0.21.jar b/order/lib/open-platform-sdk-1.0.21.jar new file mode 100644 index 0000000000000000000000000000000000000000..0cbe24f26ed8ba870e81c6eb5990b2479e5c8edf GIT binary patch literal 264820 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 z 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�nS?Tu>oud^QFWSeCF`doLLw&O2)M(X;e<$vlL&M*VgROOql$i zfZXQAgEnaP>p^)H@_jrJrV5-e4+k=HRoZP7kO!D-7njDUACD?M7RDX3`*VrB50upJ--Jh*Sc7+PL-rV#ATw?e+5;>}$Bp%gMlY+9DG6%v!3Bnp zZZs#oUf{S$MqD>P8DoQtI)CnniB@=`UmRsIxX^mQLt-s0w=7#KO_#nr*m!r2l`l_; zz{noFI^~vDTga3&g;|2Mqu~uBgXehU7MxdfB>737t!Ejjyt{sQXx^Hn03IMr- zn`SQpc@-6N(PnBBcZ8%;lPV^~SYDqNH&&xKN^9ml{-ix$(QBrW> zrn&FL*%D+IX4@m!1`tr7hWal!aIS)Uk9RocX^2vjLt7A96Su z-5HwC@ZtT&7o3tB#1I%J?!ej!(A?0v4BqDb_lEZ;1!8>5Ogc7+C;J) zsNLrzGUK4Tb4saxkj-@ z(&Xy>sMO_M@)ak(cfbEiVI`z>yBaEDIh~x@;Ey6{^)0P{9c-awP9boULH{Kp@t_ov zC&qVuQ)w7!I(tPxf+oc(aZVt?BCQBKDvKN4U9c&F;5kqn0B}Lulh zH5wSIe3E7{EiwuMGC7#x?<&Lv;l~9z$$ghs^}N<#8tl8pc%510<(zD{8hlvOAB037 zsKfT_U`^G--xS~SwD%%SGTeLXa<*zMG^A>E4$trq%T>(5^@%zK60@11e;3hE&omyUrH8S| zWyDF2FstU{#AqdbcV)*`mYFk?w76H7VuY^XvpZW*aUYDN)Gd)wDN|@BZp*-YQ)Ne6 z4&9qeuL_V9ZKP7YaL)k{l z(){y{^On#pzVu0Z>MpypmH0jB(%MhGsM`jZ%RQ}HPli!UdrD#|JFl!ObvDMdKooZE zza;fYzgJ{uWH*7WU#R}Ro!9wsYi#0e;`_W9yjh*b`%HMnx4E(D)qHR1{O8u0W%{DA&B^OdPD(Y$%LOAUZdw!`^fe%Yqnc<*W)mkS=ZKy(3(XB z!hO>m6V2je8Kv|SL8O;6rVt}?OazCtaSmYa$MJ}KK@Se)@iwAr9}%BPjhNUqYtdB><+dCHicj;?4)>o$VRL z9E2FI-37`*FMD8yZOSAaXz;K9kV5+p8}+YMyUv%F`@gwrLw_< zb;M8@yn*K%JHd;xuYbXaD%14I8gkdToLk_>hq)i+?NaG+nE+ITf^DGyUpovedVzjyK=OIwF2A zxl9(Oth(hoNHwrQ@8XNE*11VR!Nt)jS5A0&AH5Is4?Q*iy0}zGG;ZGi&X)-{#>{&+78x5ncg5ZXozWd4Yam?8NIahwe=0MIMsDhb zii3r5Fdzdz4{b$0pESWg!nN=)>Wf0AFw#l^T@cw+xJ;$RkXz9FA-x84ldB9izLqqg z9GhKjoLZ9M?UXNx<02-JhYC+3*((mi)O%@Fq^Dg9`%1-tf}G8 zte94Xf39EKMeKckkZ2xwtT+3476k;%yjhGNMwVzn=*^%2 zeI{lykND_~^jp|6X$#fhEvn}Iecu*)vb{g%GMv-&{V%8E_`FXqSY6W8*{#L;4RbBs z;-%H>^?Jp;4K` z4?I+3iXo;U77)}BdH-(PZ{@Xf9O>k>a~-k0k~9-5f{AbsIIw+i!Hwa!!S|j$+K^|F z2_LBof>#bFRL(P0j)?wojPS8mf%D4wPneu*6dsArsb%P#XP6wb+WSZ0 zV_)Ip@?}rO6WNx?UhX5;ZlM#tunxUruwQKm14Sma`4YOu@+H8m6rAQip_IO1T=Mzr zTqbte-}bor?Dh{fxbFA33hefyI~)-r_d_~j8irz=sP|0M3u&@M#G-|Os|RZG!Xddi|H>yo~qma%5CF)Y+aiG@}_W0DyLo$1ior^trLk*!G0U?T7)^x6B0_0y6S zz1Jn*Lrr7Nq~%zs4-*ruDr1uA9}YE37X>Iv^px{5?MUI#Sh!Q)t$jGEA0KwQqh5#i1#4|FCaSvO_GZKuE{#wX03QSSR zga=^(l+_F7mV)H4$qT>0530x!Kgrz_L5UsCI8!|Vy`C!EfWmYWWa!WwDppe^3!y$IyU&I+S zmxUE>nBrIeK*7QD4_kL5^`W@yygAP{7%{_nQx%(3`6?Ol+NJj;MS+3@rR)y$9+l}I z3o9=Phq6tW;EGdptMA5 z02of$Q{h1lvCLA*fn@5@W+}VO17JlDQj^?lDfJqY87%WUnsufz{QM7MyR1Dql?@K~ zNZ6<32J)+6@EgSJ;-DhI&=+1=VSZI(|6nuBi%C@%*A7GXT{S*K%nK#HP{dVm>s^(X zI=woJie!RD*e7nUvg~@;Ck+>C-$8~I!8y*~fDXfopI%^+1{7lP0-q#e~^w7Aqly#BGxVC#$C*9mKgOTAP%!1PY>Fb8X&o=c54pxcg zRvE_wWB7zV)B`JAOP8pLI z-VsMKeBl!Gr%L==Q2!dgJq^AR2dE6hN`5Q_jY7)Bx9BXN*Z$|ve8o-d#D z!Vz&D?~ys^E^^Za6+0dO;`gPu6UIN`MI1|I6W@xU2$I}_MGz)w65pamdN6-y6f=b9 ztLfFkF;L$@2luP&2lo@tje_Z{?6rpJlyAsG9l#}i0S|U)Q|7Vyz3wdo zm&p1L(_l?LCZ@Bq+YlXtJWKcz$Xk8ikDOX*42%H3GMA zolvbSy&-nJEz+^mO4DtM?r2cxa1iI3hVg`>Ci>55AlIU!gwA9kz}{j97mF{vtj@BP zGX*D}p?N-Z&ojKpsFE6;V8SxW?B@{6mT`syowHnq6lZlsLKYLTm{(%s4|||$6~G># zWpx9^Lw|krGj&pnKC3~S!=lM%%4#+Ha8uX(M?I&u+KSWVRN@6gc*Y`Zs)d0&0rBU- zjuFJ~dFB2gBE|Z&Xc)Wf$ja@-0LLo_9TYhvKOVhFqLE>v$*v3+hsj}#opLxX8qnCW z027p*RyZyOQ2EgSRCdGrOQL|u;qq^2Qp(_>vMN(!o(-uOWyeh;Ow0Ep=8r7)9-Ubt zHx%E@^ck-T*^2&Y5zGn9;f>MSXz}-Q!z{&qG#sj{1kVy0%;9U|mSR?5FwP~7^OWZ} z;_gj9&Nj~7hgy8jwcN}zPRma1ctY2zoxjO$(-a+sN!<2o%CaxB!{+_U(4RLq&)G{f zkLp%vXK=b@x#U^Z%Q$@-DzNu&vivd)3eB@PI`c*jpc&YpI~|T3hc|Iv)kb3 zq0dc}I-iX72s+=^mKk)qyls?FPU(9+wDs^k(diGFZR#7(q={frQm4cWzv~@Z_djJb zqDNVB1z1z7*%JPEmf~}*V)Or9j;-dwc%euPOG;xyltB6`VUPl)h-_FgdLRTQOKKgA z6t4Mi93u+4d~cZQ3bcx5J`G;!m@QLDKLbjK)CI94Zv+6vz4wpmm#UpQII<%E!M_D} z`7<*VygkV-p5G;3e_>tK1J*CXB1!MK^3vAB)oi(~s$+;{%^2JIS9FUe1zyybZve(G zbST1H{|ZWK&ngp^AjU>9RKjxPI#34-u34{pMPN(67h-urlLQt{eC@3pX@vWl>}u3{h-R++LoQNS1vMBU~HEowe%GpfKr21}-Nb1SG6>kP9~n^l9Ate)_BYyqo9KrzWP67^HV<_iyhjKFO86~U_sAW-!iw-P3qc(9=)b(1DUsqMOs=JzW0*Gol`G@#7f3gj zk3l4RV=I{(n2s?M#Gt4lkW5}-Neo5}hBk+WNtJ8A)HJYLepNv{@-vLiV zKHqKeXTHMvN{z3E;hV6}`A1>=HaIQ|U`!LGJ5W|aRCRvo67=8E-T3M9OM5kTS+L4O zccoq^H=?w^tM4M#g=?efhiwm_Ske4No(hi8hWmhH>{D9caf~S2!LoA12w@ZkZTj8; zO+QiY`pf8mzA)9)eaE^sM4NLxjPaetidwxNF?qkdL<`;i%dv-D=ivR^_ZEL=e*zcy zj$kURIF#4F6{s%(|GBNo*MQoDuuI6fAOUI>lTyW|oxf!XDm%Q{IeXKwQgEwMG{j^! zHh7@^$+0Ex8!<+1LqX2$10hUWmA}~#!Kd{2S`mg0@3PkB(i~V_sTuUAE0?VCEfT@4@sR1h<#!& zXpFA7xj=<`Wq&w=py?ZBe^8m%uT;N(umJ?(t@0;ow*bLW$p@oN!}P842+IW*T*ZXt zjR`gj@DVgxZ#azO2;WpvB;UN;=YnMUuD82q=EGiVum9(B_V3npUkJrR3*m`x zA_f{q)`NO;wEe{D*X$TIp$H^%)WTRi%io}=9xBSf*P9#y8C+=%f*NQk=8bsymA>eF zz^pP(zYeT^9nFGiWS(n>oc$^2CG_YjB$w#vo9mF!KmH>*zs&8)esbk_k8;A!<(YBs zD?WlgB|Dah+ZA?x<$A9-51~-ipZBz|@^O4tw2&Hs`+RkEXY_%Mol8>5a1f)WJJ%$S zgnx^0`u%x4??(FCG|vwXraLg~xhw?MYrKDXez|1#>>3v3pM829<;O6A0Oe11IDiMj ze_aCorvlIaj~K34?aU74ua?(krz^KjDlM%p7^vX6@k9a9X)~Bs&SLZLW|cnlg-uKD z3sB;UAWox7P4bG>mZNRzX zescYKKTZX7yhg$pNf?nsf@$;}z2{z-sEz5wwmrHr7-Q6ZiWuHq{RqB%_b={ zjP?BBsK(J>1`3YzlFvl*iZ8SC@1m*+jEvZUp?LMtxB8gwF;cf@Jf4Xor^9t!dgW1?Pz zZP95KN_xGxmhrYwQ{wCg#}T_t2N@pf=I5jJvgXZhxn{P;f4o@62rX=>Lr-@aGQ&ih zR2SbT+H#Oi$*fPvwU^PSIP`azJ1b zW$P}$oMv4{tFO1TF|+KN3CaF`{8bI7eqq!JO~cM4Rx##CkL=>>%dXl%7uNiXO{rqa zl_27AIv$6E$+mW?zhK~!9ppPuiPso9rC(B(zDVJ26Z z;q4zLa@4NgZ3)avz$mlsBM%ggl<6cE7ucrW!adYBLpJfP9vMhUJ-83m@j!pQd8({o zX0sg0Oi`jzKIVtXe#D!d1%VCZ-h4Lg!Yehd6sb~~J?w+`NUtw-5O}rG3p*B=a1AH& z*{py!SZT1pwKxUq1_FF_BdHH(C~Y`onbcjW5!c%6-BpQ&Hz zyzXt4>VLVsWOC#CiKf=&ao)jjFMzrVYl3xoMwwG|I8V#QwP!ZTBsD50r>Hs-37nA@ zEH>9id1{syeBY$P>no&cHp+~=(D8)f#(4c4smwRRz(nPhn42wg53uvBQy0aeM18wX zjzqsf8b~qN50et(8?hU#c@T0_8@3b}@^a5TmANQOr&50d+DwgH!ma@#Vrd${r(gR; zhnmEbneCpHZ#6I=ln|68zEFc24xX{L1>1Gt`_l)=`(;Q2UA|4~9v=x|wwDvoQ&~9j zZF%z|itDB|=w#Azo4fqxgWcM6?1kQtsTSc(a7Aum^HjAGL=L2WT4eE?gb&X*y0HUd z@G{eYAGDujgP{WAdVpd23+otv4q-B%_ILUb=^!VPvn{-fTv!ebXm(35*MfH_N0i`k ztio~WP4rb3A&Xt*@69`8tbXnzR=o-qJx9yKu*;DKLkA-4n1PYN5l)1hxLmS}Z z19yfFgE7Oq#$)@l+B-vrSBNDE*6g0`Js}iT_wR5gRD+{ZGj{P}%A1w(o3v2l8j&f{ zvu_YsN&Pm~?ch!9lvPApVuMUZk+n)n2N)-8NXxUyC`n4NWsJn7&lM!5a7y0sSt>sS zevoDCS(@q33B+BxSdnmf*u0U0c(>O zE(p=Q1S6+^b$ZzG$!8=~ed7R%({~w=W<ldYfyWD10p8H59lBB@ucRJsV~4>#s3{& z{zVhvKk=msIFR76&QuZ6<;@?>LuFlQT?tHI#;x?CaXtNFng+VSm)X1jdJJ?A!Z>-5 zMI<5xGGdNC?b%Od?~7osjk%%r1SK<##ci7R_^wLL=IJ6|)&5i5ObrcP*~kbf*)^Qj0XFE|?fm-davi+fyS!bBpQ#n9NwdQgo<= z1LNtm;amGy!Dd_=*A(d+toQIkaO(I}Hs-|SUdDzmTbW5*QN%V)qL|bml z0hu>ki8!xq!huO#>Qj}O;IQ4WBNlPv_*a+(dvFXQ-0c6wmnP!>IbUM`&X<|L@rC$5 z@Wm6rmvxWWf8tB`f8-18f6tdVjKBDD{Ga(!{y*hQ!pQ&TOZUSr1cjFMJQZrgD^$>S zaW=MYJjg~WA*Uh}uCZh;n|06{t3^giAt(5zU8v8Q(j3(hOEF^wH&!;e6_~M%cELdN z*TdoryzPdk{ngr9^_i8rZPjMS+wr2^65m$_ow1DzNGuk_LJG=`!@7Z z0`Ri_7hdH4!V9l^M!wU+Kj0-t_Ak72{e_nmgn!11+spsL%hUWN!(VuL1K=g@FTCWM z{|zs3<^a49d}ob_3&SVAxCE*@gIj?QV1QzeJ_UMbh`#HYei3H@by~qXmAOOO!-3*z z3E?UgmPZSmzQ~_u$t9dNn)T2wySsDmbDKuUXi+^q{e*(u#l6F#SH+@lYrGYP-yQnJ zkuU`SN#8yW+>H2&b(XF#AN}s(FOEI4{p-2|hd;E}d%q@vElJidE^F)vp{X}}1l!>l z>*qhHi{@08sZ89Y1DR3^NQv*?V~30E@wIJ*E+nBV!&4CJqSN*&lTkRu+T#XgSxAS9 zR6u@Aj#740Nu~#(;FFL8ibfd`CC^yWVw@C5K?P$Pm?TvSO9?Kl=$${PShvOKUq`n> z>F4CRwu&n;2y}z#7EuAJ?p{fnJqk%8v3%orl2_d*WDFunu>|W82_^fOn!8F8(Hk&E z$E+fZ{O3j6gr7ZgH2Vj_jT0QAe$Zaw7daT40!2w-6EXCyT3AyXKHXiM}de_t~uVwD9na9qsSr9SS{;et2^Y}=o3 zNTYlA7YDVxa8txd5GrJ17QzMAi63ZevfGPd57rk%Bc7`A$yCg#CJ0u;r<^USdWQ$- zlnsxK-?a$1+~(kPg&j4x%_fG|8htMf<%MVv9HrM&hvgO=khX|5)9KVb6^R+p~?YbuB>H3pl zTDb7=pW4&lS3R8qfNF0FKnc$Cf0VuaOFeihjw<5U!=;SdjLeL&xjtrnFevc3aSD(~ z?`oK>(d^JBiOGP`wWxVZ!}{3yq)9tDmUkWzydv^-NMN8pVI(!71luzQ&U4`L^Q!#o z7<|Dem@lKz;srM|Z&#Ot{B*jqvhG7=yK0LsAc;BY>GAsBYtx#yi|xP@D8Ao{7dLdn z(Ty1tK(6ucdT>g#Qca%n-Exi(zto|py=Ok(-ZgklKucPj#&;61bZmy{fE>#gOPn8X z;Rff6zjoi8OV8jz6qo+wxh=B~BCCMi(mBYI@-jRD%N3 zgmegJi&<*wFbWCQH>V+`Jhds(sJczQbLZ8jlq#$M7uT6pcqArWRx7pD&21?=4wrRS z_|&Q(@=DNf?wXUOY|M2BRFh6;mt{KC6`?jGr$?o91lImbnAVYHbuLN5&8QUPMe7C; zRGeQ~KZ?&4t|xaq?`J24OpAXRt=ewVpl9vd=9Arkb?C&?qMO`2{jOe<99O4z&`sF< zDSBx)OsDO2MjckYCTJVkQd@73awJRTpLrjR=(g&LvVmE@b<=*>icL?x(YaM{lF@j# z@4D(rj_M2tH??3!r}^1+fr$f+tv4QqbQe`882hV*wuE&sc+lNxGP1OnV!TE`HId@@8|H5M zfZbT5;NX%=Q&2GNZr?#D77`(Tl5A;9LV3zM^Sy+Cft?q2tACet@A_4ERhSKX32)xl zV?0AHrR0DX2b-1J(6>Kwi`UfcxoDHOcw72Psj}v)+~dv#C6;f1J*_#L!f(>;TF9l@ zbd+B;m=_&|tSv-GXIu^44JLU3BHG36+BcBB$HeC)(3njwZD%H_CmPDC+FJzs>YfWX zoY6C?r%hmIbeWu;qzAt35mCzV0DH)e$4FK?Znh>)RXX)D;Y_vN4sH$qRcG|FY0U{% zOUkLLwXJTmuZMoSubcDAD_*~&++#iOtKaE8xxNv$eHABk)GJy9X%b51TGh94PLd*h zA%K?k3`BXd)aC_fJN|K@wkC%eE1*i=Qx7}$>&MQr`=S7%G1fGuJM1wmjNwWzWE8f2 zVSpf@hh1ph0TnU}#_sfl{mWstmxC<41N`XO5D6KaFFFn*&8RL4->uun$Bq8*Jbu#|7Gr`{!*}k>Z%RWLFbV5Ai|P z3r&Y~$$l_?XN^lOiqR!hgG$RI?ymZ@^E0(7Yo*AtC|Kdwad3;QHI2VrCn(#XF@(>u zuKacm7FSwqkqZOy5I>^od)(+(XJg#Bc>xv52F<tKip83bnQ3_hY5>t^0DX=V#{)UxdpMl=o{-`U z`(25^aVno0@rsl#Z1{U9I^`X;H=D^)paxj-39Lomo@4ip1+zO7iv~QnJ}Q=sIRgm? z7R(kF77r>`6?hPYP>@?l3hsAseO#hE2v`XmIktzU5$0ug3N$YkXp0 zcT^P8^544&-)E;G>hIqmi`k%xp#kFXgTxR1Jf6CZuE4Nn;}QA(aGh&2BYC+mz89Qn6kXf18HdV4}QX^=$7cRCPrb~ zDAqizND0PNgNl>laM=}+7uuK(OX;hCt|;w{(u^g{JgLOQ37J?~qB3DOIY8f>dB)TQdA_ZJA?DGe=8sQxb~o2^N8b#n~zS z2e#U}m!i!mkJ~3I@JnKVHhd3>Px5ctaEI_lNPsqc$9KL!q>FzaAP1+|1?H2@2*sM- zWiC2#hnC-KC>pwE$>}|oh%$y9x&CGe^$vt4GY|9rGxi0b7k|dqW&2)KTsDZSK|)(y z=1i(pWNIHQ)d{c7^1&}*snH(H2Rm`U@Kf3Z^~brC>W>NAUy*u(kp`y8Cykz%ui}}F zF-oR)fuHx1q+>5!hInov*YlH%i2 zDzOmiHD^)m8f!&Vx~3B)?3&90G99gjVpbhqQQg-25^1|u&nU*-NLF3OT`WlQ8N^!7 zHo)j^l*BKgPl}jk87y``L{!0?vum7+K%OLbjK7J)(*fdehX{#Sf*H%#V0(Z#JYV%R zkcY+96sr8`WlGLi9R&*m<xAvYJ&el}gMb6g1BW}*t#A{Pg?QZ)HxnR##lEGY|hFRq3jfdv?RJHm9 zmMeH+hxgo%q`a-~2j4j;Kk*0A`?h~TcZKnOH4 z!-YPA4%rtWNuble2$dR=(u`se=_IHDEtecz22a3PCvIlIdv+d+c%d9LC>-GqSaA`o z;892qM1nx3!}l$BVAvaaFntrX*=?jE`1O~$+06S)`gRs`##1ia7ErGw2Yv`eR;&Q% zw1ksdMs5*i>XEtSv}6+8fC)wk%O7e@v)DD)(DlG;oT&rW6)vaj4U%?2cR_swwEYlf zESRa(HUrW2LF;DgS(f7xg242RrJZrdfc7_`4X#GS;d=7Qc(MY$zfj1%ick zH9HuP`io93*~}5u+3pKgpy!gl?XkVe9J~sKuTv!=DgM0&#`17 zilku%%f|`T@YN~5Ob46hw*5?-T;Uuyt`$QMh7fK{m5wfX@P|twP~xL5FT^_RyFY=N z&5rjxNxa*O&C(+W>HEKsU55z4Z#b+&L~s%v*(l7{53R#k1`yx}8o^h;o}?^(6)Qfj z9-gs;)hy`uKt%5>pbv#H!4P^7HD+GZgRfx6`-IWXhQ-R}k>>3}j|H(?zHNpCkX@jw zODvJ6xoI<8v8ljT+`@s~!R13&#$3kJv@*kS8`DGo60~sJ&y6h%HC|qkp3UK`=e6j- zJx1i=Gl(bl@3Q|U?v1vqK=8~NoC8=p~ z=!9`ZbE^Nr03L=)fa@FoT`Hc~UIlD^7b3kcEy_l~Bw_Q) z!>JrrV!m?J!Bn*UouG$8P_B%6{t%)qno)htAI1~)MNBinmVZ>0bhPC(()msB7DIU5 z-};HlQ3(p^F-S)_(7O~IVBiiDP1y{zx*OnK3wm-Bl$=b!Unc1JP5^8?ZX*zyT}8-o zIQS0vmQCS(WC;8yc)MtMM|D4iPr%Wkf zizE1Z2}%%vk}1Ks_R5_@A{cl@fV>F1(lEq2fDTI_kTXU=SRzCX)y!7unDPfWNyc)P zWF=QRj?4eN^BM&?;LUqSDR;iADKcfLY)!=Z&AhO_c_%CX)SK(~@d@#5vey;ml@LGR zfx@~Mf_E08MbcYhj~EF*sa4o0X^@5d+eIYGC}`T z!5gEJA!)bL`a)i&8RtGB)qv#y%lQPBa|sz63nZ~o;)5@cKv}TR`Ns((^F{_xc5s#u7!?NWPi)c9jqZ3|3N*^^J z9`y7KUS#!b?NNdm){B-`HTV*ONf#YxILii!+ksdOcO)pT>eNLc=Rx^27LBYqzD9Z~ zfQn$)h0Q_=AozgpTE*-?bQK@{K^DINSB7SWPV4ngPZ7hi^CI!1CJi3vU%V8MbpsA> zv#f40ejg3!42_N;W{XI+778f9u&CQ=efE7udp2#_8oe*B`}5G<8na3LURk$8X0O8D z;_4A_dhgqzmt!7i{Ng2>`MI4j>Otb9R;{(O3`4blz~70EZeb29SF`x*{_#1K5QgR} z+ER_>G!ub%qw4ohcM-+7Oe zA}BN?1#ny+BSyGj;GhFWbRWW$T)#9U1{tGJyE4E(T_%Y7>p^qLV6UxGFleEkRyB0i z4st?g1oKmMb?8L2<@d(q6xH~AsU`(8q1Lt+N08t7+f8nW?Vr48e{lMp3Xr{L>E|W- zJ@~tW$uRF%_72NRX+y&KmE3OZI%OeypyKpHM#6IG@<~#+2U>g|H?|K@e&ktgkEpT|rMy!z* z%0U$9iEN(z_)UlD0`6lDqJT_W22~ZobqX_Wwi}be?F(&)`9OP!+Y{lr{8Eq4xKV|G z&KSd&3XD+BW4Yh*lQU|RKpoiW5$^QpH{j0M5!oFDBp^)7iQVs8eoPb7Anm@fl;tu} zw)~UR3q3AxRI??kf##J4f+Mm_~I;M_E}VYGIT_@bSJ0)t0iw_Z?sH(l0qPFU=q% zNfz)WdS=PhF4YVqGH>}mITXp56M{|vtL>EZYIik(TEz?Bu>a$`Nol*j9u9an6Tg4^ zCh-3hX8k>+YEs?)OR&kuE}KLq3xrK!g9u7l%pYunC~8@qqQrusWFfU}m&ARzWWqkR zW$KR(=2FC*!WBD5wTLf*=}f*BW6OF&qxtl5W_MMji~? zya9XxEI>j=RnwP5*d_Y})EhX=<_6O=aRt;_I+c+nuorGJ_tWHJZDfxwEt>6!oSN`OQIqIM z8_fpgJOWSQDCFsP(w9c5kOc7%<(k7jcc}>~&EXJ1Rnc5jsVy<()(Q<0DMvL8TD<9- zAN_D~)9^5ayM2Ba8y0NjbjD^@C!bG88~gM9tanF_E)j3+5R$jlFhHmEI@Q7p2%N>K z2P`r>{x6&4#rSra+cfF=dKdh^x7BIhbuxM^r?x{s#Yo z!@q4o-`|KbZ(#xUEWfTCGbNEXYc=`{bP=uKz^^eD!wI0S!ojFXBEVP$Xh zw>2Nk&St(5Iob8+B22)O$URp8nXa_Y;8Gys3Op_-cuwIfL9{pl6f&YkAT8nwT^QO5 zW&qwFQv3HFZGV9$=3M-M!LKt`9%1&p`=*+#CDsR?X-Jmoo%`?$HsBE+9ZkeKz6m|H z5T9oU_+4B*2)ax9)up$RPR}{ z3lG%o^^0KLYo_k=*giaWQgAO*3;dcOuthMJXN`$LOB-91s&j;+ymWgWe>-SCD84f< zJRr@waBc?}jXpMxaN|Kafk@jI)+ApCHh9BkdEX_^OdqhaHxTa$x?pNFp{VRbg3(ng z`%xl3Yp61`+i&l-X>q(E_kumr5_zRh>escYh|LALyE!w|!Jy+pz)O-+d&D_Hr<+1Y zJRzNzv_)IA2jG{QD*~gg;-iZ0Aj=yQuLT6Y(+kKe9ZdJ$ehps2vZVnf` zxS_kjaK!dZ;Dz>5aEQ{ZdOOej*1@y<|M1P`WhFr)EfQ2^Ys9=G2Vu<^$=IL_i)lxYb z6D0a#vH)8z36GF8neiGXiX{wn114<-DyzojL1YBvB8IY(WxoY zV`yQwpJk)0Xv7&Ztf|Ijk|)~1beBL;q+J?JJYsTE}zL7P5i(JAV&I?I_BXI%I|W6>Z9nh0k`qq=)ThDXb{;6i_1 z9I0v2Kx)+`$>ZSks%_5HE(DsqR4vMEl4VV+rgKZBe~Bw7!5qR&(9Ckn#EN!W+K-qr zfO)3USnGwsV*E7!LgeZxZq1t~8YN0SugtI1xrb8T*M-M0OB zy|#TiT$-+YS}CPMv~oXYnnqUCSYRVT&Uy^YKhr2PH8Id2`i9_@FA$6!Lf%*cBg}pu zoR2JI7%m_YaNi?1Da zoP3=m(kiT)2Z&K;AQlKm9P=6{EXks2`-QpD=bi)pnS&cgF24r-RVN;T&HNq<_YK%4 zQK(l8YIV)BFSt?XeBf<%+3^3?Ch!8vh1Wk&B9BYU+7wRY44irCYc+HO{aI)sG&kn zdT)fN&d|;S)46FgrsN$mI}Punx} zQ-eyXXYu=&Y_1}PY=<5t^`*o@-qubN7P|_}M`cc-sbG~fX?c=#?Ea4$QU?WetUn$f zD`bmL!AFC}Hw8MoU`}@v^pE2ZZ`<9SG(B5ypVmF^@2IThqYr4pEw$_eF0K=5B*FR2 zXIyZqmNB5MIdCBCPm{*34RNAV7{V~Pj9CKMn^%5RVIk=lW{l_qm|3Q2?`P9T#YH>~yCCgmcW_tha+-9gaYIrHK4&DLFSQWyVSP|&FPx6)v>m4qiJzyumIIt4S zb8IP0nQs&%LzwJ`^Et1Om{4mVQndyI<)b55dF|;Tak?sN?Sc!Mv1P6KnmqN7iW#P> z1`XqgYjKf4qcC_y4HxL|$M)TD90>YEz2ALz$$ZB?{Zk0^-W6_H#|-h0iC9M_gOV{I z6Y!9US}PcW4MRx8QWzr{v3&o@4yyX?)ch}a@dM!X-}t@%2YCGpn}zCsq!;Ah>2)BE zLIuu9mKGUG)MB;_ zAm=xmhZu`AgKiQQ%O9DBPQhT+0%#bInxxn&Wa8Rl8RDK_;c$rP30Q$POj?fdVcM-F zq7iM=xRPcJb!GnaIV%diJ=RAIwr-J_&Wltg7M9s2&cB0|%~Jkg7Y!DjQ+*gkIe?id zYc}MeQXr!-vUC$SB5l@DpkoOuCJuzRZWVK(I#0C?tmt}B%{MJVjvzlgVALqHRSBU# z`HSx9(WD#P+vCwk{?rlcJc2D)`36x0kIu7{Xf8We*a_8dK@F`6pjTocfL>f)5f2BV z3p*-m6pOA4CP=I=me$^!PWLVK(gV8<}$5S9)#geJlmPMDdI z4p6COHTm?14opx{GN~*gz}I-Wu=Vh(eLwxkb;I}T*`n@w@vo*rstdVr)l|aE)-&dY%ySj3}Pti zy=T7QaoAvkG~6_xmJO|s9t5Y+kt@^#p{sLc3~Xe=q|xa|i@ zIg}bRZ(Qkj*z(s-6=d0RxV%dv;|f0d#mYb2bHP8#Vt+ttE9QGb$#W#wCWEm@a^XGt zg}KtNmS-URU=4;&HEf0Em~RO7XKWcsf@tg!{EJ>>FVLpBQOwW|Uh=&dmme0)aK5em zjLT2}dg%mMF@*f{;zI@{6k1sTz1jfzGT(nqFH?7WJ4a_rdwS8oT_o-Qb1a#ytP9w5 z0f1NvEzO~D1w|P}q=fVymT>{1P@qUshE@~7)q<-MIAByFTeGnHrAYo2IT|Zx4xN>! zY~~Zr@*Q=!9+gwb*zXL|ilp9&WGe45#> zqvAxf07A|rZBq$a57s^g6~NZSelbx{>drkS)1p7BZ5`tvm>2s-<5iMV_JtY`SaQM= z$c~49N*sXaU_#hpRbt)uyaE!sohq|Y-XZcKb5gkdIYX^wEd;A-yvfFe-g4##buuVx z?nX8o+A6pw$l@#bQqPDM`mRa~h1nA&7h8AdSRZGZWZY2S^xM@n(HFyu>@=59*$oBY z&faui$(D`gQg3LF;qANwR4z>EVJh~TqqX>!s$)`#YMs^KekQ=yQ8g7^HIyZrw|N54Y%B+w}PAw|?ENuP@zAEoH{&XI^R5vXzN#-nVHM zGDb|HdzWIa8e&v=N+~v|jfSFUki`3pG30ff65q6>31W4@EW@uSv(T9_1nGbWVVsUT z{n|Ai#eGI*k~tp^6>DE>E98BMXA1pvk*akz3)$65Odlj11jp}N^%1>b|vAxGGt#g z#jqwg1f$3%LvHP!&?;tBGr^epGxsC-w{6ZAu3S|bd4x5#3(Clv1Ih?xEbYXWCEY8IPW=1n%zkL(_uYah{hUWBuBkpMDVo$H~Z{Cr&zxGWU!z#4w$?aM1N&fe-w3^|N$C0O*#RV}c8#x6WcFaeQGzl^$p z@@w5J{SK@lEmxY{WdaRBvZkRWO{?)CYn&AsSS$4*y6@ab5ZS)Bh4-Y!X>znoa$!^^ zs{mwkZM|8ILBn?F*xMj%VZv4LY1*xbRhs$_O=(Xht)w-xa zc{%o)k%O@;b=9vX9LoYp<{`(*Xq<&L;e`t#W|gy)YP3de(W!dX zO@#;|z+Ajm_k489g0;}G#?3EFGiJOZxI+IXasj^8ZvkF+*#rpOLs=K`Wb&t>wz)_M z;qbN47Bd#jxt|uDK>8pqxcxQ3@*E4O)nTX)#3nw4jMr@6A1oCyrX*<>7w*7Su!YM2~v z{}5JX5yzmXouZuti~*#4m#b5>TFgJS#Bwb2I9aa0*^qALd zMqdRNJ@ssTxfy`({`k0jd$RL;93j`|dA^=_!}pPklgwGwELa4}b%?KJC;07vB6 ztXyJ<;6NQbNV5i%x6gLC%%sfTRIk+g+;c42Cx!t&$q;JK5N&%OJQs%7e;|LHUXUYw z$AxDtq21Z6R?nnbaqD#?A2)h%;RBdDZoK5L3`;>Z0W zS%bG8^E~kIXMW`mCg$A+`W{)?iyN2^o<9Zn__X)p>0$nQ=BR~V-4zdd=S1leBp&#d zWLe1miQ&-vd52abe=M;~nLxnna))h~g9CBC;hbo~sOZ2YilB-UyOqsP%1aTuAv_Ns z*NixzyTbCg0n^jKPd)Bl5xmx&TiLIOG6=Pc2$LsnkA0TNiAl1D3g;vhjYRPzKI0Mf zi0576(a}1FpsgC~Rg3IoXoQpvknk>Z1l|`RzMc}@E6PnE#>R{I92Xl!uxya|qTeoZ zD-`r0X^Bfg{`^Ia<$B0QcSY6~%WBG9ivTd-1X{Cw@csCy{rxY@JF>ieU+r!nGvk|{t2W^On!Vq&MtRt(J- z0hetb`BRT=W(uS}!6GL@MkZ4EBO!w3L2)F8GK{mEWGfILqD`(#EVaW%e-V?pcMZ&v zT|2d#oL5}#2_q6vPwS((kmiVSB5BG?qI&2Yn8#S`1q&mc9_1Mvah4$w0}a6NC*UC~ zym0xh?kq?}Jw zC^Wj=deMg-o-kCM{9U_$tZyl*7pk-Z9{g@V_fzWs;=%t988*qkL*U;=BvdzTu>sa> zOIr^$7cS=36=Sy|EUbtGHR3yO&8@;GV z@B(&$pujp%2vj;K5$JzFdW{vvCqGxVrhpR!q>iG^yVIGEGda!uKJGg3fp7*FAzgR9 zF_>7;sA;5V)HMGvEfF=QXsTd%1~f&{RM0GG{$5c`oeL)jxPzveaGN7=aUQxJi z51g>>Alioos>rX-wpdz^Ii!Zw?Nzu5Y|cNd(6XUbFT;Gz*vdjfa1aPl1&ZL4sMFIX z_EYMy{xg-Krh7R+`erXJ)?h@`u}*7o)~MS!&$VQ$LQOh#ZSC8rS9_`zBP0|?)fDNV zA;7@wtL4w3txsy*sZoCN{o(<&tF5Y9#bv8jZ@!|m$t=WgU2Kj*T?-hcl%XO|q4H#E zwPNYV$pNPx&Em4tndgv&Rg=zHVuICa>YC@osOk?+Dz;;kEGH!zOYGNz5KJd)6*F&H z_7q*65~lrb>*3dUGDW&9S<6TPC%&pn`+$zl$17V!Zh;gb{*FsW&-Y>Nt^P1(J{RVv zx|ELF{OA^Yv0|;y;!-AUYIAQtAlD08`HPy!ta(m0k(k*ETKU@~YV`X=MqXbve+4)B zf(s;q#hCgn6oye`rlW2!$%SLaVO@bcvQ|UuHOs*Fnt^bzN2fOFUliBL2AIfXvo7Y~ zv{@5q+Dwh}Lmt(JdcdAslbJQijcYg!qCYgPepY*lq*e%+WNFb%&LCatSA zg!z}96$y8XM|e=FZT_Sb+x)@PMJfH@+E9dFd(Db_)28#*W=VB9@ImFeZ;Sf0qla3! zQfNdU<%5xQQ{r#@H3Ftq7fwv|NL;!{xr8?;OocZL^mEG$DQ-s*Ra&D2&ddDSqC-jd zP%`71JJ@*Q-ifntkG6Aa54V7Zdu`t(l#G+R{ikOAh!@9E3Ju8W9G~kLL3AZY7zhi+ zRscG~2fjr?{wx-3ml$l$ZO5Rt3>*0ZUZ)fN7g`+eJ?6S7z6cbMEte(GWk;LR*_2Cd z*Zj9xtgv2Yp@^V7;Iv7O1Vq+JQZSJJRykt#%AC z5%Tu4*qz(#X~Prb8u#G%*RXtluxUJk@Sk8y93G+IJc7)a{*QW-Y`aDV;M(N{PH+gu}v&@J2;~F=4ye@dcZi@7CW?k>D zb)4`#!>V}tVfzP1-K-qwcgHQktgFqg9+;ag&pCqK6@uUgprM`kJv|EEa ztYylUbwS}l;YYoYMpm zu~Fp2Uj;y3EK-UyVwohG1dBKc9Fk(uHiRa%pMz zz+#ig_CWbczBI9xJ-ow9CBNrKMp49*6++?8#Fy+K_w!3@VdNssiOv)KQ2;rXjM{_n z3`Ubsc1U#P3oNR74*J+iw`T{RZ=rTh$ z7hyh?pJx}(i_(KEMz}2=aU#4Iz52Qtal*u^Cn=*B#Iq>){vN$*pMYyQ_ejA5mm)nS zT_SzjPBMZz5hkNvb_UH^6VPeheo!OLrrYs>-DdIA5}zy_{+dTFNx%QiJ)rTM;uoDB z3w9g4X%-{4N1B$ylJx)Fv6umx%jNf#KhBwQGW zeeRV68BNdR2Se#nY_{YL%M->WaT*_gM$38b)`_=+CqLpS*9l!dt_kb?%e5oFyja6c~zBg{gw^%z>G_%;Lna8{^v7U4)vy3}|<2vC}0b(S^hZ}Jq`XD-t z975qLAqoX=$c>9g^n(wBZ_5`%QOeX_zEeoX0C$!!Fs{(h9a!hCz`I z)rKycf|F+&Og|axcQDG!Dti^l%M4%Fg+J1x-f{b^tQUt_&MMO|#2r~m>qw+3$1GK& z%^;^)eWbO?Xb~Sq`IB3-n$u)5tywd~CA;#MedmxtC%)P)L&gZ#F1pN&0mWjOhVn4d z{{2?h%iQKu&*$A^N6**uST;T1=YG)4rS~&sSeubMDc;)(y3fvCs5;FF-3??FJy$1N z)E12c2Wu_JACI`7ZrOXN4f!aeyh4g9lU5W)f&&CO^Rr=7z?p?UJW37Y-xH0w*OIL) zNMVOr)7+&8=y+&JZ*^g;F#2+uDeygWSa1gQ=2e1XyRhI0OAV>9!|aqxYUUVKJ8|?G^cHu0?Xg-Dt3T?`yY0mSF33{;VhzlYGvq| zu_THm(pvojY`4L#h9N{qO0cG}OAufp7$b`Z(<*HK{aEJ3vuPYH{0N4OlypEjAx(j% zs_5&lLZl4!Q%X-l)mL1m&kvGtyK8gd)UpXjHIeFM3s7*mkmmk)Lg$KriIKM(BMOY<$XrF^y);z?)mj7EPIib>gD zN4KuTv%u>dSiEMuy{$jgbXl)jTdwk$sBDWB?+6mso*U54&EPztL*C@I;$B)EUQ1Nf zXGyI{x!$NwTf8Gfy~AN*{;as5Ov|WlwJK(vc*HJIzNLFBZg*)j^za>Xm4c~x)tV6nJTGcA#GO>+bq@${qhF@l|5MhqTGakI_Q}}Pz&*j( zM_3ZM|1Pj)sA1D`j=XU~x^?My>q)x*L(9_W_a?J!9I1X~?-b}xo6hbhIcTC%Q$8Pd z4rYKCK*K5NhNt&Qf$FYTu3}zmH7;%>2cnMOVg>bR#48@mh;Wz*n|zm2G6uX45J?}c zgvCVsA1Hs?&H#?8#Sf$JovKS?{;G6S>8zMm)10`=n4ys;S!kC@I;>rbdDWV?%=ecO zFX?Ry&bf_hso8=BCmQOvFE2~xmr{PiyBF9ktj+3IEHrXyIjpJ;19c29e%9V|NNr#( zinSW%){04Q&FP{~P?<0<-a(($n#VRXW;&%fBM-9MC5(*WNmmTS4iPiC4cSZNc0#fGjpuyzfaiRj*^Qv1lLyK!T289qT%@~#E*xp@tqex6AuHj#^{1C+M48>- z{%<;UaJa`6bwoUgkSBYq!KAJ^cP5`TPCXJ13yT%7q~%i}qI+17yqgE;~l5RzpUtZdU?3Mp!O5!Iws~ZddX{ zn;jRAH+a)ZMC7P&=T!%>2dSCS{qQ##9?t^@f}$m&bfZydB}2$91aLBYCRliPWY6{z zLse`Mq5@^#^_`gt$=x8GLa@5>oT%F#gi0ERy$^MSzm}y%u&!np5MiZFBXgpndKJC_ zGjhz|>3WS-)7FgW7-32L)^BvF!uR0Qj3&%BQRgAzHlN@jX`A22!L+{JD_3O|0v$i? z%_lkB10Ft(8?;5qskuI)ca_-<%LHHHuebV&yrOs_BbK@Z1dbI<`kUgI*L{SaF@6Dc zpLzX=-k6OI^`nuKbeV<%CeA+iX+>^r5mr4;QDIqB=rqL+m|-Asn`w`L*XCZ5x=0<)4}pS&C}C*GkfRm>A3t*6|fwouFyC6x&~ z&o?pVa#guJcjk$rUpE_4VL3u5X4~t6^b|EVPUE~R85vBe>J{&>_m^D#&Z(s@ME^u64o#?nscd_7@(CH1((_$Y|^zh4+~bAWhQu<*mR43-)?@99F3g> z>?R3dH--K$?53ch;lCQqT?hPW%)9b(FL9lPnsg2<31LN%wWm24cvReGY0>WsoIw^~ zgZOl5t@dO#;&Zfvq9-S@583LzzBhYYH|n5m$`%C6h8g)@&v;zYW}IqVa3L@ zd%FAl=bvuFcque+^c~hJ}!gbXd@F`n=x^_E-;QcZ)d=t{nQ=wl9PI*}) znU;EBRJ*1^BPeXM0^?K3!BC#R^-YS+2kp`t41w#%(V}k;#N`vWG_mPN6SfG(Y@VB4 z%H|VuK;&VkV}3Znchc-kG*~NcnnG8`fuWtRIMj07bJykc!Jj^2Qf#*LaQ;|LHR|Ni zd2X)qA$R%q$oX{OytF`8ZCK=Dl(WLCqPoHILt@!x7%gdKLfH^x_)9mWWJ;guV~n&U zYLyRg77gp{G>t3T$M8-!lHKRG{_9vtTE}lGNU5X~hhx-Bn6lwP#a(GN+w)h7wHNKE zI@M6t*-Y&7pOFK#7mTdyDEpmm(c!p)pV3h;s9L^#KDYXMe{)RHyPysHylz#4cU*Ww zzYbC3JZJ8mjRARrkL|F!2Q)!*xpy8kLM7&GhwWle2+yunxTTHaIqd$iel{zuwJ5o6 zz&_%MW%(SLOaCe?qZIfOlES05bU)ScnhbANj@n5}y3)1YE_cJL80|H$Oyw-)g-i#E zHIAa|QfF;JF%}oTG(_!~Ii52q1xq#rh-e&k>TE0Y9D0z3&fyIhf$5(+^?DCcb{t2mcI3SRDQfZv$3&i zKmPm)x>4tAcOm;y)7f<<$Ax*q+o7_d-Qf|e1lqTC8dXC%IQb>JOg2)j()Ft@VBj>? zjcT;o4XM(Q{ojV`wq1LBN?qTHfL^3<_|hkHgmB9cbm^hH5vW$t>%3P&EL6m@G4N6R z_RGU0~cp+(y@? zwP3=VZ*GSQsj{Q;1Z_fl!;6FM+N7vB)xf8B6iQon&;LCblyByK8el|u7`PTQ% zc67b(dzQ!JrM&#xos!U--}hnVG!{jMs|*)|<$C#lb8_5zpN0i`hIwXJjmN3&8-bFy z6#-+Kl|+PXL7s?}B@H9F#UvxYV_Zfg%=AeEMXi+R(OPO!wkQ1zqf`bCJo^!YTY6d7 z@Fi9;22r<>s>jQ(cN~@@v6Hs(b6n3P`yEDB9|Hz6quwh{8P8`U&Lct@3jWj{;rYkQ zr|yn41^oS4kx#zi4sGGU4V)s8X=mDCiSn^eNS74#y;BzrCjD5@kfVe<72%0}OCD7J z6_b(6=tFI+Qt>);O>AkJYja`LFkIN+S{38?rDKJFCJ>k+#wrrs4aaIiF+k z2@1sTvAngA3leR2u_&-yiM(vt4{y~hkN<8l5v2}>M<8sW8I9i5@seBhc2lK2kBlAG z`i6MlVsc2^wQU0tyca+O?-!Yqe@5`W@8lDMOs-PGlscL`mUbbuq zIErX2S{My!Nh>K#&viEKlpsfTL-vss`f*?v|7kETKj%;)SMK+1e9x;K=5I)Lm#9>H zE-tC$3t7aYWPo)%m~$8fzMOr&?zS9)5(r5MlY~;H$&dzpmUUdkL}ZreVMy;No8O92 z&QO~41gk9h%8IxZe*Q3F%Qp@qwEMBe~ z%TP-dE@dj1Y_b~ky~Ra{86Ye?%n?}o=xbc2oUy8s;Nt;skNT2OR(?W zMGw!Y!!~Q9w9)8OwsPw%8XXK`Vl8gfj@xvT=;whRD$-IDeyJNMdgEp;XRuq)z&xNuYoHs8zsz&~{5zGak=eDYkYuE^0m}ZwjN< zgn~dZe|kaVa5sKBMK1W=BU)Tc>eYGgSC9>5`d0hT(#8gvfa5yNj3(H0_@V_Kf&#PU z=?E1N`VE>)C22^a@tu9rj&3^zU&^S%)!=H@vNuM|h}qFZ&C(TLQzqmooeU1P%S;}h zju@_DJXVTSYdfDbf481-qg2G&y~96!80Z)g8ixDcYR@M-tKau|iz+Q%q0IDT#>~N< zk|4yjiFtwr9sZXBgBo)51f!No*3aovt#nnES|-UhowiSMO>6XJ2aQx>+FDu&mmL!wv|#7g!sCI9(#I{oWd; zfeNMVN_MA(`nW<*PNX1DelE5bnAa*@dQtMGsAzKgObr5LIpGJrm6%9gR}BfWa-11P ze=jTM>qLohJB*t_R>J3dAM6k~2^Wr&I*!0&g;utGhy=U|x*{-UQJo7fKN*g3G&n_~ z;X5a<71jU)RoJEYSv%YApUG6A%YkIn!OO8}9TbQ- z+o>ScE>6c*pVB&d;@W@MYM$~6=t!4ug{yh)acLpa-HcG@Haqq`OqU1#^a@0gC;bXa zAzrBe4Th)4F;tGLe4g}U|H)H!hJ$>OE@&J%rFA1m{OT`_C~{^_WRp&gGq0tsvb2JU zM%!_LZ5J*R;v=`z8ODPk>1*bm9O~rEaVPNV$oP?{ZK}Qei&smG>CHhh?LEFq9?b;d zk+=ScUnerFugFhde>3H+3aJR}u=x_hu>o!FOTPjl=JpoznQinN7{7zOX^KqV9#Vn= zj9zA)ITqSuXf|`#hA(ob<{Vuw{0~`K--AZy5&>blAl)a*K~^%;QLJbojC(~N+}n}B z*x60dH~ALR@xvpL9k(ROlrMVikn6e79CElF(C5XqKSR$O$lS>K{~4xx^w=m$DNGmG zyx-DOfpK|kAGH^WmW=`dO>%H-zE6OfKVQDjkRIAnsf2&os9MiBTbf-_YktK zHxjKKUffo)#|L!**vBye5^2dmn6A`_`Y^WjdzemeYx%zNgpRO&i3}_^7Lb7~+TU7k z{G>d;Z;DG;8{7P``H`-=@O|^+&gxBLUaFLmVn`M#hWJ8U2ytRujz6vPf`6U;Sr?o3 zyg*8vVSuaJ5nFqa99JZLB=gZEu9MhM1XpDHN<a1zFiRIrTlpudlFYscVa?s^^sF zvrT2rXm7cYKxg+#O1gHda`+N>mnV%B3~TdFZ|Ht|_j z#tx!9nE;Nnh`HOecfnL{s8BA$rfG8C%w=eSq81JFP8GfQTsFB<4X;gg-lLr5tYk9j zolvjR?$HP*wF&ZBdJJ*AM*W6RUVaR(P5cwby@6Ou#Sa0mEy%H*NT>^aJ zD8vtZ&#E5@JW9XNPkV3Q*akTjokODkVEXu*c{{`K$pqcSiP_I*`^@=Gbgo^m>g7c!$mBC})H1i&iyLwi#tm|lP(oejyACIa+p&^)*aoP?y&Z?r*`~dB2aJncF+BU49$cFv+F4 z$aVT^`#tPHPbiwRMb;e^hMU<6_I9T5XLYz<2BuP__F-NCNo1U~h%j+Zi_{2=2EfixAYRXc0kT_O| zjxq^>^>xnND2wLfxk0k-C$B$~rmcZem% zAn6L`vrgO#)^h_MOfe%EdrN4rF&L=Tue3p#)bYVJg$EPTGs5nKCGMD{_t|HQWAwCs zGB-g_IQZZ}c)jF3)a%2ZsJvE_0p_EpX4e#MdbdIKNu>1tW;@0NurhChLSCBK$Mz$0%&o#m_$I6_>BR!adtQWs)h4a2M@T9gT~%70-F8wH zJ@#gHoG0{I6rxrDTT?^@bGHx+6S%~jsAEDLcu;MaZyZP!qwFL;Wu3eQ7NR)wl|tzC4%u>J3A4a4#iin#^&4sCtuLI%;A>B9vbfvL zabdAOFuAXl5-#idyjl+io{U4t-*tRLz&~_cANk0@hcMY_@zCod>s=Ga>JG8*b3Iyj zC4US7{>>@@eklLDpH6EOyCn>J0jXFhK<@1?PHX&^qyCQ>w|}_m4ReVsmLxJSroc$C z#8VSQmjc^;gRm$IAm*rY`JB^(Z$w}4Pq^O)PHjL+R}e;pbZmwIcv1z9YiolDFcRN3c^nOu|EORkJP|BpPq}|OIZO|f?AvG|1 zt{3{+K;uSoVi3Q<7d^SGzM%Z`OC{q1<4SG~i5K*{4Y{}lVjWE{-VDU)j1vwGeq8Ug zAJJQMQZfds;1_ORC$Ve0VS^?o8-nbI6enVr?&f?<9D}EYmQ}GWOE?s&3_}AhGc;b} z6jS>7Qy1alxuf=Hz1NCri|-rFO)oL@|$D#?69_-Ar57>&cn}iVWN= zPE^`749*No7^zWM-|P&#y1A*0O+K-PLn-TfbE64HHaxid1eBYz9%|=}d18w~0T! zp_Ix!M#b7*nfkoox_q|pzC}=bHkh;OGIDt*=p$P@>#ss*bOsM)BBNHti2Q{DEar>R z6ywb4lWsPcQi-WLf=@Ub8E-{82g(}C6}oEQbW=ojh4m3=u2=TwzKVL}b+jMQlKJ&` z5F45Q_N4P!rqT^|a%^GYsEk80=Ui)o1A6w33GEb_FBT7IyhWQ#KI!qC!0sU+yL zZ~I>{%ZeHFiaA1rsoqTF<{(`JfI#45_Sklz6z2!^2`?;Yi&5p5b#{hqwm@sG`*!lF+jpB3H4DZ;M zZS1!}e9F2o+fHf{*XPsaH`M`#V6QjY@^BsGKqR?HZhaFfwR5*j;|39CpFN5e2GVQy zptU|jBD~ikA`T4^1=4FLfb?473zRGJm5P3+LU*WkZa?P1G2`7M7nFeJ(_n&gCLB_2 zuJ@rBjx}4wvM(jr{kz*^Bcj52;=X-Pug&{RL_}kch&A_2r&M$$#SpRRFPVxzD+H@W_+#I!ykk(Cw=FCxyRsU#EXn=JRvT|ep-AHA!~Zq*nMKS;H4@o{VK-3%PN*^ zY(-F2W*5b0(!dGawQrOmO_Jy9WD=(@?D@&XW6Y5AUQtf)S1WbS&Gc`p9x;6t4eH-M z>rr(dy1Lm2uuC!4p$W~c!WF1#tVmI$Jh_C?tS_hG3EHs)36ks zY8#=Zsx30ep4KAjF!88_+k`<1NUt4Hs2XOgSSgXYeUa2jS}}3-Uqv#Yfydl3-eK#` zf`Wjs0Rb5Lhu056dJaZF1+se^`mYrAET-f!ccrST%oQs&a!xpcuS4@UD<_~@LojuF3_3V(}%y#G3FLDy4P>#x8bBx3tVV?+L zE^{T_cog&5x8Iu~38m(fXt%CCL66X~!?kvb%N!h=o!22_=qf4@8uiyvPZ|C&x^QY_lAB#YD=f$r3m0#lV+xV z#mc}NHj3}aoi{+Cdg1M>EwAX8j_o&OGihc5*%X8sRti60)j=jaL2AfLXdhg|##S-z z6JV#4wXF3LNb_t;obr;q$o|&$^^oD)uvNh})|q8t+I|_;*8Ajh-*?p?=;jU+!^$yw z59lbJYqc!%Db8`vI6j2bSD;#K5b<|(v+!NR-(O@_PnBGj0mn4?fCwG)!$M+dV`64a zFa7=JJweG&kdng?MCmV0>~9x~7RAC?9s}(;riEJr7gfU+aXIFrdBd?xv3 z-8NXTN3@oayL5TFKE@iWzRU;<8kfax>YX%m2)D{-+XmftW)6$C!*7Z?;VX>41Tnd2 zy<@0Ho1SPjZ}dD|nx9N!+2NSU>$ZX_mhVlo!1tD!VuDW-v|nl{7=~o`vB^Le^h;e_ zZVWcWo!S(&&ZRrpaemzr>l`X*In>0Ty>LwspvvF0hxf!vI&6FilmEqV_NKQA1$aHvy(<-pVs&!GZxmUjN_+-eMxdjPb}qN z#icLWl@i~E_1D5pmSKHXi6GMj+v`|VDy-_xaDa?`Mm*b)(VdM7SIxe0?Fc6$|E`v~y39nJ$%h{N)M!*W*$n|*|t3f5__jlh>`+BExAI?Fkn|f}+)#1O zSk$tnl^ADz%vDK# z9#Bbo8+95{4W0*h@)b7REs^`2tyb(gzQ^ZXI{lLUdKsY4U-RraBMh7+$U?uu>UL$DYr>ZGnxb7> z?#0l(j*p*#Oh;yGkB$1?!2Y(6p`CWFx1I~H@Vs1{(*4o4;$gC>z|7?%fjg|PCXZ|$y?i0I1- zqAGjCM`Oc|5q_CK2LXO+UmCIyd^K1h>}p~Ig}#^wBiv_3Wg+Td0g+Me5X|_wevGVV z;1QKM`xNFHmZRN_%B3Gb`d2Z;z-7CWg+JLuU*;qcmS53i|sl(54cnG za?VEf4n}%{hE`_QB4*BJ4rVsi|9hUgKH;4Wz9>e=^1N(=-C~cOzVNV#*(4XNqf|CV z6|57Q#^M_Z^I%&LSed=o%$-Y4&V30(n11d>EB;M6Sng0{a7EDWhj*(*x9B14E%^P( zgu&t+BsRuN?NQ6EZp@?WZ;8Hvf>a7WL4sAs^HWeySmULv5VunayU3?Vv86@&kd4vb zi-@i&t?Hy=A>zGP~MGN&a`L41u zQUX(Y`ZN~vpm0HQS)Zb{DMok2nK}Q^jT-u;l_+NfY{f*j_H)kM_e7d^lbm{Y7mXTeYQ@I1yYnL8m&509KjK*eBc`PVJgRt z!Q_Is#Sd$PQr`$dcD9n6Rbx)})5z;{4X_ecP8RkDFosL%!Ls2j5~J z9qxNOy}dcRaP6WcZ9w3#daZ%TK3q-+Ys87CX)l~!6wA|+m zCQ!M~DOe6916Z6yQp#S4JhbQpQgBM}gu8IA)T#vERC(EsQrk}7;k$D;X5I6Fbc2pB zCFOgh*4pcrxZ^0jBokzPMYSj zTEt2#6RX)+a*!Q!%W%lZIM}MR;Rmr?X^zBC`cUnALR?{>5F84pneg%np&QMYYQ+w! zWj2%Ltvy!6T|6QfQzjUlYeY)R;nBcWTg^+f5Ed>(`6i4-|)k7|cX;zfqOL!RX`3 z?W^lf>?P*&cg51`NZ^dVPh~2}80IrpoeX>w;ShK3{_YUU>1xPGLhO#nHQoXdqdI#v z+wWNtBT)PXF$$4K&jg|y3_TH7$MK`8FqGEi`wnvTAQ|ulErlLtaPA~jhDs{#`m^Bd zr(9;=98f=fqsOv(T8uKxlH!j}-TbtB+$<)R6_@?ck!#WdrYx_u*}E8>#MOqBA8CRq zFP@2QDoAEz652VS{Vl>*aZ96DMIIn^gE;vP5v`3FW0Tr731h@%`AUYe(e(*(uem!r zuvOS)O;9p38J=<3SWXjs z+%9AnjYLY5CdA*(Y9YZI-Nh#x@ZnUVF6qUpjvUXckonOPbd z+5fr28T-z9N&q8hj6-6-NfsY0&c{>=q(6vD@MArkKTKX2OrSqiwPTus-6luLKCvs3 zbCoY7&8#0p2?QE)hcL-Ogp6W}vc&8ncSiG8Dz{1BTW_B`SY7aX9%U`;)t4{@NQju2 z36TUd%8SZ&;UxV5t}Wg2mIs{l1Pda6rSy^MH1r#HanPB>aMdkXfgXxZw^QSsDyGsu}%|FWHsoM&O|++{O1W6{NR z#_}pjKs6x*kL9H-hMh)Ligl%hOEdOGdPn5B!NM7@`J(lHKO!epq2i8YxT_~W=lcY= zQ|0*Q;!v*-ka&wybIC_WED&jj>wDpZ=hCD}>NB*SHEWa)#mcnV8J(KPCr*=8k^7$A zK_C%zznHfYoYHLb-adiOX!;lgs;9k;fT4?%giV6{u>%YXH{t0%-Hs)c!#v$*3FH>f z#ie!YGJg#Zrf$KfYBOxT7BAAZf-$clS+D7t<$J2l@?ek+=?2RDVCgBaJ`Wd+P;8Zf z8@?T=LC4tI*szGBz>@%#)emI?s$@)_ zn%Lhk>VGP{=tms+d>E+U&kQ_Gp8Ow_>d#{Mhxpa2!+K&&4*JW&+oc^RIciOdaE!2uva#y7u8`O`+RacX`ylvkr zuRI=vci&6n^TpDLb!57@zRy=m?!&gL$cwLU?=ITd-9En(9s}igWFxNbhffx_A_j}S zQXrJFG$PhmHBoMPD#&(?65Arvg|v9kNl3K#Jg~*K5&FWlN~x>uvMMlYC6`Fqqe`dC ztLa4-xNG!RPwActAy0zLXa;0t30IsbaaW8e#(+$WV~*NyfzWbcml({apGiHTGL7Ie zW2^83EbE^2=$s!=!b(*~xy{qBg1nq%+3yr2cNhpLOx|I(JShv=A|vSgLdr)kQ1O9f zx+t7_FfRq;7!q`?M44tO9}nzg-CfzYQII{y&#?98_MIOTFP_RPb5Ls)=G_(u40cP^ z21>uC9MRADSovx}l4LpLv56&LrCm;)W?A$T1QcK4lng?`nd@teXi;{&m`9oL0B?RcuQynJ94VQ)&Mgg0`H6 z!^qZ%t!*qvL#caA={0`dGb(+%sk9seBB#tMj770DS)-+H=>CE`Y$VN&>A7W+vMWYL zS5kw_a?T97KG*@>JC%XCtZZwUVhLuHDX`KwG9}A;)slXS4;BSOliO9wpL7|M$LsUB zM)T@>?B{Z+Fnn@jbemVs6^&_#vLM~5aV1}*%NDT4+P*RrtKHLXpm;estP&n4Ql`Kf z?_REnZRV35f}UIsqs|mMInSs_BO|8T&Hqjvax$44s&@Q5B!$7? zjcU4#atmsq!2S`0vh-tqFk>`<6g5@+7_ExtV<3T5}At`iOnjLYMPpOzI`7r;;GOBPufnlCW`t@#4}lg zxS9fdY@-}m)XMXW6Tb)T^?9={}TFEixv>2Q* zD<35)BkuOk3HxQE$5JAE!YXT}m`c_11j}!%42xx%jR)z|kulKH`M|7GX;5tl&l}Oy zq4eES&3oS5xOtEa(WD|Z>{&kNe^tBvK8CvKUF-hv+!$P;*k+c{tCE)q<+Y4&35oGL9IQ^>ELQIWe{SCmOaA3gW)#{a~n^E7td6ZX1p54Vqf$<;w`0 zHBHCs8gNR%K{{2mP*<9qDpGh$*&RHUtO%QRBd{s!74KLs_~|S4!ToRT?R-9s)~DA> zVp`Lr@9kPjq)2(gUMs(oQZ#P7(+83+kF`DJdM=D^LHIF_ALH`($rW`N-C}ezdB4;H z%|{nhU>1F3%0fA7iHvgWfcv(Cnr8k*n5#;kLWF#2v>n2(p(P}$LxXT^f*mRy7K-}9 z%#6MM(KV2!hU4Zq7U~tHl8`pb>u5RFG0}}o*kbK+RANCT6;mRJkfS5Z++|E!{hXs; zG%fm=`c|XQ<|r&=dFYbRn|__ORmjQ*FD?EU`c|PYb9U)&WZX@#@5PZCu21(eWUGZ^ zW8GLc_cNkdr`yjSk^AmPJ?l{f3r<@D%;1kdpIVG9CZKl>@N$bG?bjKa3HI^N_F*lw zHugL_z~OK{T$wnHME}6=!Q!=j85^wA=Ijf3CWm{czxJe%v?Ro5*p={(WVrBCop9vS z(h|EY&2#~Qxwvrk4l~YoDUqpmh1tHMg{_7hf$<)NSzUE>tx^f}g=m$@qr7Yv2}#xU z{&V)GSxPnWZ8FAXDvTEJ$>l{A&(_U-U$!YfN984YD#XlFBqy0N->52aZtM8T_@I!0 z!6RAv)6?1X^|i@G=gbzxPmX~!X*g&O(FkR^1yiz*xeOfXGp~_n8E6+`a>)0CUTKOR@nQTY1n8`#9Y z=5;W^QHE)#2)nr$vA)*$g zdc!n4q=$x}X|CB#f~6?sfR1R1u*Ky@a;&cdnWwangqqIIm}n6fQjEV>n!Yxacaf$D zO=JHp%U@L84-JHlM)v{(Z?l@4z-JOMlAnHcObBnn2pMcif;q_8?Ubj~6UJ>5(`@4~ zIGp$6jY3Dpnz!q@?U}|kFQN5yIWc>D^lCo=O?NVkE~ZaEVm4AKC?A|2Vso}8%*^}& zm?u)x@I@zU602qhc4-st99q>on4*3z=uQ97A#5(H7du6J$wdT?%GLspPm=AIl*pb= z&D*+dqQFf>`&(x&Xl}$K>x=Qx9 z&GAjBiW|sQjr%|_dj-+wjH|hVIHY=3JWlHUgqE5~JsMs_|5EF#e5#867rVQIl;XzA{m^|SzudX&M6kKylNn2l^ zKjI7Ny{g(vf48SFV7=F=Gn5t{P#bCw*EKF9Aa0uToEgi2cL=5L%JiwfRo0@8SnaFR z<<0FLkMV$uE&=FkGd5os=Pdk-T8X-B5 zhBsd~@}WrGwx3bAo!KJm)uDPF_IsYRf$q^K1wLAOMOvdFcF1n$jAVk#A?;DJDnVF~ zuHAXXDSfj`%**Ef=#`c-m;fhldAef^;;_Y2w|X9tfdHf2aLXbVZ=5v=I2E)BT2iW< zXCe`IZ?xHpBa0?^01JmABBZsx?|Y4q zJ-VHd<#Xy}prFy@Z%dcu6u?ov(T-3#s>f4wN++|vxK&*js?Of+1Cp=Rv;WA@ApC=o zpjyzF6Ue4um!_~R&t?7%!43sk)4Y}XvM2%{i=%)aM)UW8vnEU{%{ zE=`5{0(=q>z4^c9%9&gny$iuLHq?^0gZP4LIgCUaZDLTDrq`ok%?I5pk5+c`5eg1%mmd+JcuYYcV56Q8Th2&iEk4%^4 zuq%Y|4g3BcVdXRxST5iOe+0fMe#0FmWBkJ*4vG+j>ta9=y)$L44?Bku)xw9ck;l*q z3C|$zlh>S#V=E4JSOw*YOQLFWdU=)UclYg!lMl$O{!j-Fc_2k;i)x8iHl|(%E8TPu zleKnODlv_-*v>o_IX{(4IXwcZ9_4PBT8V8s!y;ScFmjjAk-2aZVT6KJNl^U|+FE;* zg`T}PSE3}B&`Bk^tN_jmxA5De7rw7AKnyCg-wv1*A@{8QeZUU{1P0hK2m1E+1ti^q z$cQQn(n`pR(OUtvoUQ5q;>!Pi_|gA<*uch$&dSKl(Mivm&cV*{ftwkBeY1_Nku|NY zrJkd)jlC7EgQ3OWa4;ZVewfeGa}d;&fnD4ols_uP|J3lG+w#9~wm@rLtt>yP$=EC~ zAhcbm88&MUseP!h)!rKi1J|%LZPZiiRV8@Rupwa|^YvyTW`F)l-SGXa?`E8Q)T9TQ zDC4(}bTUx*RG8?u&KzR7tG*}lA`$(K-8L^CweGHJ+pd}@mYEho`+nMSZhFtv(#i1z ze+YF@yeUt70LSO*HqgWrqD2d#B+9ONj#9P7s!_8p9WQv$l%Ot5?irQ-mp&Z0_wf)GlB+gVdVq+^Pw?t5%82B+!W!e|SA&jT{X%~Wedlfh43MpVj z!xV=cWjPf2>!V5`;U6p3Lc+4*h(K)_!A`)FD9MRhJYrX+ZIu=T!4-(Dj$+>zehlX! z5{)aSA`iVaeY-n7OA4FvS`w>vny3wLmRR4GXmFOK4ey)emlBy;u@&;d3Tb9or^aZq zd`*%MrgS~tT2W~1);fOYS>AaClY(6kq+UT8hmQ{V+ZQucPAUUkHMtJ8rJ-3%)0nY$ zo*d9j;Nr<$)1^L1RT>N}Fcn6_LZ!_EU!Nbga82L5BYHLQ#9cRy%xj1uWze5OoTE;v zj&xN6Hd2VBSZa@U5ggHQ)OACd{?T~dAy1qaR$ZPyHT2q(Nhz49LZq_7?UMd*jdY|+ zLPYK=+G8YM`$dmn8euIS8-b_jY4-bQX6w-m0^A=bq*!*FAGe1#HA5lQnP~5t|t&KBRb(g9j1-43&ACK{H z;M#TV=-#ckH(4`CZZPFVUs*g#T#f?QBMm8T=s3Bt(`D_1HU=IE^Ytd0_#3$JqetOi zUr2`Jv0;^Hiji-hlwVyw$|PKL{rmVsw77Bb|^ZJb!}Z4gQzbfcc?frrCH(9DoV$419l2>i>V5skZjO3K7_pn#0?zOY-dWDul+LCP2YJTBq0VlE47Wp8GWdV6zTUfHaa7a@eC^OWZ} zt0*NOO=}m)8H73F6H^M2^%t;)+BPl<>@hp0H&Zi3ybdzR?BxWG#PpcCbT1T=dTpA9 z-f}2dPC*;36U?tI?Lf;*fr4Rx1JM!S`dMkh{`l+nA1EOE-%B?Ar+@#s4F=?Uc9Nit zf}S<-fgs=;0og8y*0y^({hjWw`?_}|U{8HVsLlpmaSeF(AUs$_ZB_52UYtkC<8qQ zQ!^v`2O-JsL7x8#Qs2qY#OUEh65K=N0Aj>HGyQM20ZB>^b@zVT?0%tPIF`0*T~hw$!e8^K@T z{aum%AxPrC2K$F72L1x_`}u{3&?xVrb^Qh!fcQrx^52Jrg?gBee;%^NBNPvE%&O8K%b#Hi3q5l`o$lA%u;a(Siw*C0` zFhu_WL(kgU#!>IbzWMJr#`_FXWOMc%WsQCvB1Hc<_)C2ZCf4?c8{{hCz z#?Z*}K@6OGd?5s~0{?fY?3|2#p?vR~YNZEIe&w0m7w%WTK>8h1{rFxF$9{qM8&=`I zD4_rj@V~L_7jDV@mPtGe^gCU>KkvdG2K=>CavyH+VYpxWB;@x70tQ%4Jixc#bVEKl4E9Thi3LImh7NHKm8V=A7Pc> z>E>d*ko+59P?G`S5%`M`@H@|M?(zQ(tsmnEjOW8lO>wyqfCUz&W`O&}dym>N<^MIc zhe>TV)_zq77^naU}b4+*E5JAY&=z&|8_jPN}&5UjsR=Eqq5IS+m< zmnow<6pDawxB`9SzDJM*c>ADS-V=^rj+L)v@aaB4AQcn@w!BY;r;D@dIlE2xH(xm{_|YFOjj;G0D89!C|1>bM2Q3*Ci;gT`$LV17&+>h zS^lM209s_iK-fsg$kN98M^&63Z~t?0>1RE+nBjIf33Qqf5LA_WZSWQO|7gPxOZuHE z*^gIp_WxC(=jSE_oG;P~H6_`#d+f0S@EvifKC(;HA( z`vB|@0sO1`lV%jqfe(%OAMBR_m~Hl>d%$@AI~nmF3nF?jpaeNEaWw96I8Whs$o%Ul zTRYm@SpML#;P=?*_ndbl!+#&?d9yO=@6uKc1orPMS}EoK_jdd$}C&H~1ZDe^0|-QfgDi!QTW#CKM2v`$H*W{M(fNR~i1< z-G84J8Lc^j!N9c00JOk;hwHWJ{|DW_72rSf6}|@4?fa8TzW`JP@A1{!@^`5IfENY= zW=>W{N={Z*diLL)k$<%`4uTcrx4GV#RnG+IUVskMp{W$e|`N_Z^|>P6L7OBK;)>!&D> zYCY9bdB1aSW-|Yod(S;Hq@Pczew^?5ujhZx{hxd7Ki0ySg2y1UG;e>;obxL7+>)8S z*;BS@;3nINEK(j#dkm(^Vy=%%GUJMfAw4O>r0ik3+pkXb!+e5~qLAP1Ki0yZrwh-A zyQ=D?Wk+2jgX3x*=#Ck*g+`F|?LXGS=`%!Tpq8oha_*}9-*U*S&*H~jWBOddEOJnV z(;}}qB7YZs@v~h{{4%; zhy4;@KLZi))ukfHcw&f96my~97^qhp0 zbYp6M7AJ*|*j=)YS+ou;N*74)A`!lWz#mQ#jIh?xSUtBtL_YjPn1;L|; z;F()Q;EI97R!jrdMx$9Byk|>j*#Kz#oXfsp=4vSUrse$Q61a8=0nrK#(;T^Emk5;`P|6ig z-BSr(I(QSStEqCI-y?!l^d^lue(#1FuLeQPdk~ZEkN&>TQ>LR_l}7V>f)}I7FkxW7=0DFs}8a6Dh3-jq$y5=@e!#5XKB6;=cPee+G_E zQIQI;5TM5^F)1w;&EX--Iko?pP2%VB`PSqlRbt7Qu9k|poq+gmD`W+W0OUrtkUD0f%NBtyqb}H-H z+$*>fbK(wojxvT=cHyZfLDg4HMoR&o-(PY$5-#2uyKtJMe9j3^r3xpRT*J$b#7-=J z1J>>iEJg0Yy%XMvm7-q{!bJ%!DZgy9HLo$u+zv{o=bY;=@R6)}07tjB_usPf1@#&{ z)!6E{PQZKuOc1ea!^=V#hXPTZQuqBCXTw2hflVcSsIv42A&QjHg;0CzB}{GvR7(iN zzUpE7u@?5eDuzNmptYB1v2)kgRzRY0z(%vq+UsHvR$DsBqleKn7OrV2wWmcP)6K@h z6=;(Tzgi2o-Q;tnCJspD@k21acXRp8oHmTLFz${ZL){V52iITy5&~%< zQ=V;PNr3Br@CUEzI|+%43`xz*&$GzKY58W`qeQ-^ui7$Y#VDZX0ZlXZ#}C~=OZsz< zyno1!^=zB657~oO>v@m(WMmdwXNR0Y;;zg7W)4^(6RJMo^Z&b>o(K#gIK0N)IMZ(4(F( zKQv>KvlA-Qe!kr3{p!%RFC-pGXc0cbG-s59zgJ1Ck2faeWviT}ezU!2L-qp6L=;M+ z$u#yfe8SU+V11|R=0E&{&+0aq$vEZ$WG1zmKH-^YEFcdu(sstc5xPAszf{vU8EfJC z<{r$%kZw#FFXtm=SGd=<@YX;`-X05ooDGIwt%bwa>dKK`?eqcMN@nviQUuuO*$ zdUd@pow$8vp{)AIrnml&4--Ml!odt(WKOgdCQ4eBGOA?F5R1i#W+=V# zhNtgr;#?Zc3vi#TY|ZZN4B2nMnl&LI_2Y#>;tchL%ptJxjKq{?#9LgIXR@;1S4X1Z z$NOA%@bmlfXJT&*mCr&n%b_!)zQ{=cC9AnkhjtnJkF_u;*e#NJQRMgE@BNO#O^?@c z?w9#bBp)F+r6%NBr2QlI$%#pMVk9QMPDO%-fqq?9^ zx!hpaa^?bt8q( zs_ZkCFK6MTOZp8|$&08(6Z8Fk0PP#lXaIM}@PJlzsHiMloKJxM8kG24J!kJQnS^kX z9|lPO=19hFK;`xy^%rH-HjBF`eA1ey#Gtk74}J$FW+)vo401p6YY&oyUO?LA1+Uzaj@31T9j>Y`7_Xl@ z{@pA{F&qv+&pD!I@(EIxI_E9Z{IoQv)q$CZA=NUZSG2;~f2@Ul-*)B7cj{nr>HHGj zX35VB$2~h`%Pgt)LFf&Py#ZtY%|0?)1QX_|jh$djGN+^`7UUS!$KAa6<5Xse6BxGx z8TZXas^hY3tu^5`J{P>%jo$MZxE&dI;d`nBr;ZOdo3qX8)4e+Gn`X^1-N{&D0?4S( zuTUG+z~1XH4lQUFBVQLsqk9f{fDGIPgSR1rPg$ilcm#@EqsoL?hB$iU!8KH}I@X~` z)$sWm*D)RLNW#OT(Qd2k4PUmd_E9&K&0`zrbb2z=E^A#!l`l-bfGy`RT%A-NakbxD zE7=*-?=V?gGNN^h+KAz%6mvn2MSak{+rP_W`zT)w8c7B%*s3<@V2dS3eiJPlS082^ zmxO%_`_sxVq{JI7=7PbvXo07n%CgjX*l8nsmXiq$(OB`ts~DU!jI5my`|VV9aY8Q6 zuYRGiPWL`ew&}R*cBqX@#ZjK`-Qf53*2RL=2L(GV%Z_}bHm-y2^&!SQLqSfunmSf& ze>(gj+^-i@LiYmgPpb`2r>&R%Gut#SLuF%gVSefnD-hFQY?}Ed;&VyP8n<7*HQ?(j z*(TOn$nN6iDQl<3f!DtujfmWdQ>fO&iPF!xjxFEFmDXq_Hpu3MvUUC+LMq#yCTfSTU7T2GIiO)DKN#%pUz{Ha76ht8 zL~ikMpc@9wjK7J+bS=QaM3ImBaiM6@!7H+q+T1y`Yd$U4tOe~bOh=ET1_uk!TwBRG zte({uRlEkyFSs&BoiWlN%5u0uz#$nXrgmWMg42;6sWY~U6d*|ziSuAT%*mtzx&ple3Ehb89I%l{Rd&zci$6H_i%7Ve1h zIt%aFjJSv(Gq^fdU_hd(X~Cir!dM9j&ywrdWf*3AA;x09475^cv5#>y`&b z#lyJmUDo$DEa4D!zMU;V zQj*QS+f(+Mb&I^(ya2Chf}BIW#+oZYbnr??$I&q1qx0>KvbSn}3Na}(!6E>)E7TFG z*=GLwAIJa0`n~I8!Kbb|eu4nhrd#=OxWg?KPWJQaRd#hdl$(pSgFcv_IavUyqFk+A zJB!O<^L6#NLfE;_Iy=(Ze+ZBjHO&4{d6UhEv%9?#b__Q42bFGlcf9T?QD}GXJt?`) zCjhU5Gtq>98z&=b+fNj7bk%h9B`poJ=O9J<&-M8$f+h$jiqwZ|;}*0gR>ig&nW(n^ zmAC&6IYV%^(1+xQIdcV|HXnA7RXHnUjrr*EcIb2$ShQnu)B*vHqWc($Oszsb+wi!x_%1nvR4&RtFHe@0I29l zBKh{*kqJB4Axj9j^itElZ30|}03`*svQ|s_Mr1HrVH!bdpgC$M6L0wWiX61b7bp@P+Cf2Wi<5E#j+b*S$ z-e_BMHb>IFKmP88grKW~ycbF&E&WrJX{f|kc0+RmVRiPStl{v_mk@2Vs=K7~;_VEa zx`YM1r^jc0zkCanFZ!=3Y60F1$=QTBp#*Y>IrdI_O4;c_w`aYHvKc@;-<#zsn<>+<@ALmX$(f9lH{n?Wd^MATkIsHy{WvM_4F;k zfpakNp2Du~F-0V_6pwqg8+055i_-h0X@Oi?UR5Krwj~dxHvj8I?eTdC?d3R5 zH4wcGH*i^M&C5oO@@MFXHHkX``~nV7w=5C3(#>&rMWBPp^tKLa|=42aSwtvocc_!6GBn9?#HAUlin`^0R>$6e}vec|Xr_WcTf zAnDTj+e_j|v`!21f`;Voz6OoH42{x|YmW_wwun*_wRF{*SHOWnYUg|%W+)dpm_pEVk zxDa{Sknt@zLubOAGu@S0^)mHn3vObu`_DP-+bqhN zVc?CJqP`gWcbBn8&Tt*O@&)S{R&M0ghvsKwq5VL4>_We}BM+gL>5dY#4Vm{vyere$ zft|-z9@F{rsu328+Lb@`brlt77J5~EU(fbsQ}xfo`P%+2 zK7>(GQFD>YUxw69UpiGEtg2&}4Hl|BShm8KPi@01fBV!nU2EZdPlm7j5^9w?mA~6q pMd|yVrbb+aU=-|1D!<|w7gZA(Sf^`Tt#P%4T%GQjrN}S3{{v#DC_n%J literal 0 HcmV?d00001 diff --git a/order/pom.xml b/order/pom.xml index dac2cc8..b88c6de 100644 --- a/order/pom.xml +++ b/order/pom.xml @@ -18,6 +18,13 @@ service PACKT-SNAPSHOT + + meituan.skd + meituan-open-sdk + system + 1.0.21 + ${basedir}/lib/open-platform-sdk-1.0.21.jar + diff --git a/order/src/main/java/com/order/controller/OrderController.java b/order/src/main/java/com/order/controller/OrderController.java index fce04dc..6c8c126 100644 --- a/order/src/main/java/com/order/controller/OrderController.java +++ b/order/src/main/java/com/order/controller/OrderController.java @@ -289,8 +289,9 @@ public class OrderController { } BsOrderChild bsOrderChild = orderChildService.getDetail(body.getString("childOrderNo")); + BsOrderGoods orderGoods = orderGoodsService.findGoodsOrderByChild(bsOrderChild.getChildOrderNo()); - if (bsOrderChild.getStatus() != OrderChildStatusEnum.status2.getCode()) { + if (orderGoods.getExt3() != null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前状态不可完成激活!"); } // 子订单完成 @@ -299,14 +300,15 @@ public class OrderController { // 赠送优惠券包 GoodsSpecs goodsSpecs = goodsSpecsService.queryDetailByGoodsId(bsOrderChild.getProductSpecId()); - BsOrderGoods orderGoods = orderGoodsService.findGoodsOrderByChild(bsOrderChild.getChildOrderNo()); - Map map = new HashMap<>(); map.put("discountPkNo" , goodsSpecs.getExt1()); map.put("number" , bsOrderChild.getProductCount()); map.put("phone" , orderGoods.getUserPhone()); HaiOilService.pushPk(map); + orderGoods.setExt3("已赠送"); + orderGoodsService.update(orderGoods); + return ResponseMsgUtil.success("操作成功"); } catch (Exception e) { diff --git a/order/src/main/java/com/order/controller/business/BsOrderCinemaController.java b/order/src/main/java/com/order/controller/business/BsOrderCinemaController.java index 3d6c4d5..9412f8d 100644 --- a/order/src/main/java/com/order/controller/business/BsOrderCinemaController.java +++ b/order/src/main/java/com/order/controller/business/BsOrderCinemaController.java @@ -39,7 +39,6 @@ public class BsOrderCinemaController { @Resource private BsOrderCinemaService bsOrderCinemaService; - @RequestMapping(value="/getListCinema",method = RequestMethod.GET) @ResponseBody @ApiOperation(value = "查询列表") diff --git a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java index 5888da5..6f1608c 100644 --- a/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java +++ b/order/src/main/java/com/order/controller/business/BsOrderGoodsController.java @@ -350,6 +350,9 @@ public class BsOrderGoodsController { if (userAddress == null) { throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "暂无物流信息!"); } + if (orderGoods.getLogisticsNo() == null) { + throw ErrorHelp.genException(SysCode.System , ErrorCode.COMMON_ERROR , "待揽收!"); + } GoodsLogistics logistics = (GoodsLogistics) bsOrderGoodsService.getLogisticsMsg(orderGoods.getLogisticsNo() , userAddress.getPhone()); diff --git a/order/src/main/java/com/order/controller/notify/MeiTuanController.java b/order/src/main/java/com/order/controller/notify/MeiTuanController.java new file mode 100644 index 0000000..529b311 --- /dev/null +++ b/order/src/main/java/com/order/controller/notify/MeiTuanController.java @@ -0,0 +1,71 @@ +package com.order.controller.notify; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.hfkj.common.exception.ErrorCode; +import com.hfkj.common.exception.ErrorHelp; +import com.hfkj.common.exception.SysCode; +import com.hfkj.config.CommonSysConst; +import com.hfkj.meituan.MeiTuanService; +import com.meituan.sqt.utils.EncryptUtil; +import com.meituan.sqt.utils.JsonUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.util.Objects; + +@Controller +@RequestMapping(value = "/meiTuan") +@Api(value = "美团通知") +public class MeiTuanController { + + private static Logger log = LoggerFactory.getLogger(MeiTuanService.class); + + @RequestMapping(value = "/placeOrder", method = RequestMethod.POST) + @ApiOperation(value = "下单") + @ResponseBody + public void placeOrder(@RequestBody JSONObject reqBodyStr, HttpServletRequest request, HttpServletResponse response) { + try { + log.info("============回调任务Start============="); + String accessKey = reqBodyStr.getString("accessKey"); + String content = reqBodyStr.getString("content"); + log.info("美团下单-回调参数: {}", reqBodyStr); + if (accessKey == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "accessKey错误"); + } + if (!Objects.equals(accessKey, CommonSysConst.getSysConfig().getMtAccessKey())) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "accessKey错误"); + } + + if (content == null) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "content错误"); + } + + + JSONObject jsonObject = JSONObject.parseObject(EncryptUtil.aesDecrypt(content, CommonSysConst.getSysConfig().getMtSecretKey()));; + log.info("美团下单-解密参数: {}", jsonObject); + + log.info("============回调任务End============="); + + + response.setCharacterEncoding("UTF-8"); + response.setContentType("text/html;charset=utf-8"); + PrintWriter writer= response.getWriter(); + writer.write("SUCCESS"); + + + } catch (Exception e) { + log.error("WechatPayController --> wechatNotify() error!", e); + } + } +} diff --git a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java index 89ec8ed..720da5f 100644 --- a/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java +++ b/schedule/src/main/java/com/hfkj/schedule/OrderGoodsSchedule.java @@ -1,13 +1,10 @@ package com.hfkj.schedule; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.hfkj.common.exception.ErrorCode; import com.hfkj.common.exception.ErrorHelp; import com.hfkj.common.exception.SysCode; import com.hfkj.common.utils.DateUtil; import com.hfkj.entity.*; -import com.hfkj.qianzhu.StarbucksService; import com.hfkj.service.goods.BsOrderGoodsService; import com.hfkj.service.goods.BsOrderStarbucksService; import com.hfkj.service.goods.GoodsUserAddressService; diff --git a/service/src/main/java/com/hfkj/meituan/MeiTuanService.java b/service/src/main/java/com/hfkj/meituan/MeiTuanService.java index 243750b..9b0972b 100644 --- a/service/src/main/java/com/hfkj/meituan/MeiTuanService.java +++ b/service/src/main/java/com/hfkj/meituan/MeiTuanService.java @@ -22,10 +22,8 @@ import java.util.Map; **/ public class MeiTuanService { - private static Logger log = LoggerFactory.getLogger(MeiTuanService.class); - /** * @MethodName loginFree * @Description: H5免登接口 diff --git a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java index c500a32..865a088 100644 --- a/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java +++ b/service/src/main/java/com/hfkj/service/goods/impl/BsOrderGoodsServiceImpl.java @@ -262,6 +262,9 @@ public class BsOrderGoodsServiceImpl implements BsOrderGoodsService { if (jsonObjects == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "暂未发货!"); } + if (!jsonObjects.getBoolean("success")) { + throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, jsonObjects.getString("msg")); + } System.out.println("======================================" + jsonObjects); return editLogistics((JSONObject) jsonObjects.get("data")); } diff --git a/service/src/main/resources/prod/commonConfig.properties b/service/src/main/resources/prod/commonConfig.properties index 87a69bf..b5a0f84 100644 --- a/service/src/main/resources/prod/commonConfig.properties +++ b/service/src/main/resources/prod/commonConfig.properties @@ -69,3 +69,8 @@ HgNotifyUrl = 1 HgApiKey=3fd74e7c16b04681a0f481c5bc0a96d3 HgMemberId=1622808562621276161 HgPostUrl=http://113.250.49.100:8088/recharge/ + + +haiOilPostUrl = https://oil.dctpay.com +haiOilAppid = hf166f4b2ed75e71 +haiOilAppSecret = 5a11778cfdd4962282a359397bf4f86b \ No newline at end of file From 8fb6fa3f4c031169e5371e460471874fd51cbe35 Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Sat, 14 Sep 2024 09:30:31 +0800 Subject: [PATCH 4/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 35 +++---- .../hfkj/dao/BsOrderMeituanSqlProvider.java | 28 ++---- .../java/com/hfkj/entity/BsOrderMeituan.java | 31 ++---- .../hfkj/entity/BsOrderMeituanExample.java | 96 ++++++------------- 4 files changed, 57 insertions(+), 133 deletions(-) diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java index 1ddf47a..3402a8d 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -40,8 +40,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Insert({ "insert into bs_order_meituan (order_no, child_order_no, ", - "trade_no, sqt_biz_order_id -sqt_biz_order_id, ", + "trade_no, sqt_biz_order_id, ", "mer_id, mer_name, user_id, ", "user_phone, first_business_type, ", "second_business_type, ent_id, ", @@ -62,8 +61,7 @@ sqt_biz_order_id, ", "exception_msg, ext_1, ", "ext_2, ext_3)", "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", - "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR}, ", + "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId,jdbcType=VARCHAR}, ", "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", "#{userPhone,jdbcType=VARCHAR}, #{firstBusinessType,jdbcType=VARCHAR}, ", "#{secondBusinessType,jdbcType=VARCHAR}, #{entId,jdbcType=BIGINT}, ", @@ -97,9 +95,7 @@ sqtBizOrderId,jdbcType=VARCHAR}, ", @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), - @Result(column="sqt_biz_order_id -sqt_biz_order_id", property="sqtBizOrderId -sqtBizOrderId", jdbcType=JdbcType.VARCHAR), + @Result(column="sqt_biz_order_id", property="sqtBizOrderId", jdbcType=JdbcType.VARCHAR), @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), @@ -144,15 +140,14 @@ sqtBizOrderId", jdbcType=JdbcType.VARCHAR), @Select({ "select", - "id, order_no, child_order_no, trade_no, sqt_biz_order_id -sqt_biz_order_id, mer_id, ", - "mer_name, user_id, user_phone, first_business_type, second_business_type, ent_id, ", - "img, goods_name, trace_id, goods_count, total_price, total_deduction_price, ", - "coupon_discount_price, integral_discount_price, platform_code, pay_real_price, ", - "ent_pay_amount, business_discount_pay_amount, service_fee_amount, pay_channel, ", - "pay_serial_no, pay_type, `status`, meituan_status, staff_info, business_info, ", - "trade_expiring_time, create_time, pay_time, cancel_time, refund_time, finish_time, ", - "update_time, exception_status, exception_msg, ext_1, ext_2, ext_3", + "id, order_no, child_order_no, trade_no, sqt_biz_order_id, mer_id, mer_name, ", + "user_id, user_phone, first_business_type, second_business_type, ent_id, img, ", + "goods_name, trace_id, goods_count, total_price, total_deduction_price, coupon_discount_price, ", + "integral_discount_price, platform_code, pay_real_price, ent_pay_amount, business_discount_pay_amount, ", + "service_fee_amount, pay_channel, pay_serial_no, pay_type, `status`, meituan_status, ", + "staff_info, business_info, trade_expiring_time, create_time, pay_time, cancel_time, ", + "refund_time, finish_time, update_time, exception_status, exception_msg, ext_1, ", + "ext_2, ext_3", "from bs_order_meituan", "where id = #{id,jdbcType=BIGINT}" }) @@ -161,9 +156,7 @@ sqt_biz_order_id, mer_id, ", @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), - @Result(column="sqt_biz_order_id -sqt_biz_order_id", property="sqtBizOrderId -sqtBizOrderId", jdbcType=JdbcType.VARCHAR), + @Result(column="sqt_biz_order_id", property="sqtBizOrderId", jdbcType=JdbcType.VARCHAR), @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), @Result(column="user_id", property="userId", jdbcType=JdbcType.BIGINT), @@ -220,9 +213,7 @@ sqtBizOrderId", jdbcType=JdbcType.VARCHAR), "set order_no = #{orderNo,jdbcType=VARCHAR},", "child_order_no = #{childOrderNo,jdbcType=VARCHAR},", "trade_no = #{tradeNo,jdbcType=VARCHAR},", - "sqt_biz_order_id -sqt_biz_order_id = #{sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR},", + "sqt_biz_order_id = #{sqtBizOrderId,jdbcType=VARCHAR},", "mer_id = #{merId,jdbcType=BIGINT},", "mer_name = #{merName,jdbcType=VARCHAR},", "user_id = #{userId,jdbcType=BIGINT},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java index 4516261..720529c 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -40,11 +40,8 @@ public class BsOrderMeituanSqlProvider { sql.VALUES("trade_no", "#{tradeNo,jdbcType=VARCHAR}"); } - if (record.getSqtBizOrderId -sqtBizOrderId() != null) { - sql.VALUES("sqt_biz_order_id -sqt_biz_order_id", "#{sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR}"); + if (record.getSqtBizOrderId() != null) { + sql.VALUES("sqt_biz_order_id", "#{sqtBizOrderId,jdbcType=VARCHAR}"); } if (record.getMerId() != null) { @@ -216,8 +213,7 @@ sqtBizOrderId,jdbcType=VARCHAR}"); sql.SELECT("order_no"); sql.SELECT("child_order_no"); sql.SELECT("trade_no"); - sql.SELECT("sqt_biz_order_id -sqt_biz_order_id"); + sql.SELECT("sqt_biz_order_id"); sql.SELECT("mer_id"); sql.SELECT("mer_name"); sql.SELECT("user_id"); @@ -290,11 +286,8 @@ sqt_biz_order_id"); sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); } - if (record.getSqtBizOrderId -sqtBizOrderId() != null) { - sql.SET("sqt_biz_order_id -sqt_biz_order_id = #{record.sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR}"); + if (record.getSqtBizOrderId() != null) { + sql.SET("sqt_biz_order_id = #{record.sqtBizOrderId,jdbcType=VARCHAR}"); } if (record.getMerId() != null) { @@ -465,9 +458,7 @@ sqtBizOrderId,jdbcType=VARCHAR}"); sql.SET("order_no = #{record.orderNo,jdbcType=VARCHAR}"); sql.SET("child_order_no = #{record.childOrderNo,jdbcType=VARCHAR}"); sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); - sql.SET("sqt_biz_order_id -sqt_biz_order_id = #{record.sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR}"); + sql.SET("sqt_biz_order_id = #{record.sqtBizOrderId,jdbcType=VARCHAR}"); sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}"); sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}"); sql.SET("user_id = #{record.userId,jdbcType=BIGINT}"); @@ -529,11 +520,8 @@ sqtBizOrderId,jdbcType=VARCHAR}"); sql.SET("trade_no = #{tradeNo,jdbcType=VARCHAR}"); } - if (record.getSqtBizOrderId -sqtBizOrderId() != null) { - sql.SET("sqt_biz_order_id -sqt_biz_order_id = #{sqtBizOrderId -sqtBizOrderId,jdbcType=VARCHAR}"); + if (record.getSqtBizOrderId() != null) { + sql.SET("sqt_biz_order_id = #{sqtBizOrderId,jdbcType=VARCHAR}"); } if (record.getMerId() != null) { diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java index 9eb3b67..23dc5dd 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -37,8 +37,7 @@ public class BsOrderMeituan implements Serializable { /** * 美团企业版订单号 */ - private String sqtBizOrderId -sqtBizOrderId; + private String sqtBizOrderId; /** * 商户id @@ -264,18 +263,12 @@ sqtBizOrderId; this.tradeNo = tradeNo; } - public String getSqtBizOrderId -sqtBizOrderId() { - return sqtBizOrderId -sqtBizOrderId; + public String getSqtBizOrderId() { + return sqtBizOrderId; } - public void setSqtBizOrderId -sqtBizOrderId(String sqtBizOrderId -sqtBizOrderId) { - this.sqtBizOrderId -sqtBizOrderId = sqtBizOrderId -sqtBizOrderId; + public void setSqtBizOrderId(String sqtBizOrderId) { + this.sqtBizOrderId = sqtBizOrderId; } public Long getMerId() { @@ -606,11 +599,7 @@ sqtBizOrderId; && (this.getOrderNo() == null ? other.getOrderNo() == null : this.getOrderNo().equals(other.getOrderNo())) && (this.getChildOrderNo() == null ? other.getChildOrderNo() == null : this.getChildOrderNo().equals(other.getChildOrderNo())) && (this.getTradeNo() == null ? other.getTradeNo() == null : this.getTradeNo().equals(other.getTradeNo())) - && (this.getSqtBizOrderId -sqtBizOrderId() == null ? other.getSqtBizOrderId -sqtBizOrderId() == null : this.getSqtBizOrderId -sqtBizOrderId().equals(other.getSqtBizOrderId -sqtBizOrderId())) + && (this.getSqtBizOrderId() == null ? other.getSqtBizOrderId() == null : this.getSqtBizOrderId().equals(other.getSqtBizOrderId())) && (this.getMerId() == null ? other.getMerId() == null : this.getMerId().equals(other.getMerId())) && (this.getMerName() == null ? other.getMerName() == null : this.getMerName().equals(other.getMerName())) && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId())) @@ -660,9 +649,7 @@ sqtBizOrderId())) result = prime * result + ((getOrderNo() == null) ? 0 : getOrderNo().hashCode()); result = prime * result + ((getChildOrderNo() == null) ? 0 : getChildOrderNo().hashCode()); result = prime * result + ((getTradeNo() == null) ? 0 : getTradeNo().hashCode()); - result = prime * result + ((getSqtBizOrderId -sqtBizOrderId() == null) ? 0 : getSqtBizOrderId -sqtBizOrderId().hashCode()); + result = prime * result + ((getSqtBizOrderId() == null) ? 0 : getSqtBizOrderId().hashCode()); result = prime * result + ((getMerId() == null) ? 0 : getMerId().hashCode()); result = prime * result + ((getMerName() == null) ? 0 : getMerName().hashCode()); result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode()); @@ -715,9 +702,7 @@ sqtBizOrderId().hashCode()); sb.append(", orderNo=").append(orderNo); sb.append(", childOrderNo=").append(childOrderNo); sb.append(", tradeNo=").append(tradeNo); - sb.append(", sqtBizOrderId -sqtBizOrderId=").append(sqtBizOrderId -sqtBizOrderId); + sb.append(", sqtBizOrderId=").append(sqtBizOrderId); sb.append(", merId=").append(merId); sb.append(", merName=").append(merName); sb.append(", userId=").append(userId); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java index 5398f10..4d528e9 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -396,113 +396,73 @@ public class BsOrderMeituanExample { return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdIsNull() { - addCriterion("sqt_biz_order_id -sqt_biz_order_id is null"); + public Criteria andSqtBizOrderIdIsNull() { + addCriterion("sqt_biz_order_id is null"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdIsNotNull() { - addCriterion("sqt_biz_order_id -sqt_biz_order_id is not null"); + public Criteria andSqtBizOrderIdIsNotNull() { + addCriterion("sqt_biz_order_id is not null"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdEqualTo(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id =", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdEqualTo(String value) { + addCriterion("sqt_biz_order_id =", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdNotEqualTo(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id <>", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdNotEqualTo(String value) { + addCriterion("sqt_biz_order_id <>", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdGreaterThan(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id >", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdGreaterThan(String value) { + addCriterion("sqt_biz_order_id >", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdGreaterThanOrEqualTo(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id >=", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdGreaterThanOrEqualTo(String value) { + addCriterion("sqt_biz_order_id >=", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdLessThan(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id <", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdLessThan(String value) { + addCriterion("sqt_biz_order_id <", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdLessThanOrEqualTo(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id <=", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdLessThanOrEqualTo(String value) { + addCriterion("sqt_biz_order_id <=", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdLike(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id like", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdLike(String value) { + addCriterion("sqt_biz_order_id like", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdNotLike(String value) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id not like", value, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdNotLike(String value) { + addCriterion("sqt_biz_order_id not like", value, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdIn(List values) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id in", values, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdIn(List values) { + addCriterion("sqt_biz_order_id in", values, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdNotIn(List values) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id not in", values, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdNotIn(List values) { + addCriterion("sqt_biz_order_id not in", values, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdBetween(String value1, String value2) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id between", value1, value2, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdBetween(String value1, String value2) { + addCriterion("sqt_biz_order_id between", value1, value2, "sqtBizOrderId"); return (Criteria) this; } - public Criteria andSqtBizOrderId -sqtBizOrderIdNotBetween(String value1, String value2) { - addCriterion("sqt_biz_order_id -sqt_biz_order_id not between", value1, value2, "sqtBizOrderId -sqtBizOrderId"); + public Criteria andSqtBizOrderIdNotBetween(String value1, String value2) { + addCriterion("sqt_biz_order_id not between", value1, value2, "sqtBizOrderId"); return (Criteria) this; } From 2df9618753e89aad92745e339074a94702c63c9e Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Sat, 14 Sep 2024 15:01:44 +0800 Subject: [PATCH 5/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 51 ++++++++-------- .../hfkj/dao/BsOrderMeituanSqlProvider.java | 14 +++++ .../java/com/hfkj/entity/BsOrderMeituan.java | 16 +++++ .../hfkj/entity/BsOrderMeituanExample.java | 60 +++++++++++++++++++ 4 files changed, 117 insertions(+), 24 deletions(-) diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java index 3402a8d..dee2e0d 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -50,16 +50,16 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "coupon_discount_price, integral_discount_price, ", "platform_code, pay_real_price, ", "ent_pay_amount, business_discount_pay_amount, ", - "service_fee_amount, pay_channel, ", - "pay_serial_no, pay_type, ", - "`status`, meituan_status, ", - "staff_info, business_info, ", - "trade_expiring_time, create_time, ", - "pay_time, cancel_time, ", - "refund_time, finish_time, ", - "update_time, exception_status, ", - "exception_msg, ext_1, ", - "ext_2, ext_3)", + "service_fee_amount, service_price, ", + "pay_channel, pay_serial_no, ", + "pay_type, `status`, ", + "meituan_status, staff_info, ", + "business_info, trade_expiring_time, ", + "create_time, pay_time, ", + "cancel_time, refund_time, ", + "finish_time, update_time, ", + "exception_status, exception_msg, ", + "ext_1, ext_2, ext_3)", "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId,jdbcType=VARCHAR}, ", "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", @@ -71,16 +71,16 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "#{couponDiscountPrice,jdbcType=DECIMAL}, #{integralDiscountPrice,jdbcType=DECIMAL}, ", "#{platformCode,jdbcType=VARCHAR}, #{payRealPrice,jdbcType=DECIMAL}, ", "#{entPayAmount,jdbcType=DECIMAL}, #{businessDiscountPayAmount,jdbcType=DECIMAL}, ", - "#{serviceFeeAmount,jdbcType=DECIMAL}, #{payChannel,jdbcType=INTEGER}, ", - "#{paySerialNo,jdbcType=VARCHAR}, #{payType,jdbcType=INTEGER}, ", - "#{status,jdbcType=INTEGER}, #{meituanStatus,jdbcType=INTEGER}, ", - "#{staffInfo,jdbcType=VARCHAR}, #{businessInfo,jdbcType=VARCHAR}, ", - "#{tradeExpiringTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP}, ", - "#{payTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ", - "#{refundTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", - "#{updateTime,jdbcType=TIMESTAMP}, #{exceptionStatus,jdbcType=BIT}, ", - "#{exceptionMsg,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ", - "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" + "#{serviceFeeAmount,jdbcType=DECIMAL}, #{servicePrice,jdbcType=DECIMAL}, ", + "#{payChannel,jdbcType=INTEGER}, #{paySerialNo,jdbcType=VARCHAR}, ", + "#{payType,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, ", + "#{meituanStatus,jdbcType=INTEGER}, #{staffInfo,jdbcType=VARCHAR}, ", + "#{businessInfo,jdbcType=VARCHAR}, #{tradeExpiringTime,jdbcType=TIMESTAMP}, ", + "#{createTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ", + "#{cancelTime,jdbcType=TIMESTAMP}, #{refundTime,jdbcType=TIMESTAMP}, ", + "#{finishTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ", + "#{exceptionStatus,jdbcType=BIT}, #{exceptionMsg,jdbcType=VARCHAR}, ", + "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) @Options(useGeneratedKeys=true,keyProperty="id") int insert(BsOrderMeituan record); @@ -116,6 +116,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="service_price", property="servicePrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_channel", property="payChannel", jdbcType=JdbcType.INTEGER), @Result(column="pay_serial_no", property="paySerialNo", jdbcType=JdbcType.VARCHAR), @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), @@ -144,10 +145,10 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "user_id, user_phone, first_business_type, second_business_type, ent_id, img, ", "goods_name, trace_id, goods_count, total_price, total_deduction_price, coupon_discount_price, ", "integral_discount_price, platform_code, pay_real_price, ent_pay_amount, business_discount_pay_amount, ", - "service_fee_amount, pay_channel, pay_serial_no, pay_type, `status`, meituan_status, ", - "staff_info, business_info, trade_expiring_time, create_time, pay_time, cancel_time, ", - "refund_time, finish_time, update_time, exception_status, exception_msg, ext_1, ", - "ext_2, ext_3", + "service_fee_amount, service_price, pay_channel, pay_serial_no, pay_type, `status`, ", + "meituan_status, staff_info, business_info, trade_expiring_time, create_time, ", + "pay_time, cancel_time, refund_time, finish_time, update_time, exception_status, ", + "exception_msg, ext_1, ext_2, ext_3", "from bs_order_meituan", "where id = #{id,jdbcType=BIGINT}" }) @@ -177,6 +178,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="service_price", property="servicePrice", jdbcType=JdbcType.DECIMAL), @Result(column="pay_channel", property="payChannel", jdbcType=JdbcType.INTEGER), @Result(column="pay_serial_no", property="paySerialNo", jdbcType=JdbcType.VARCHAR), @Result(column="pay_type", property="payType", jdbcType=JdbcType.INTEGER), @@ -234,6 +236,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL},", "business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL},", "service_fee_amount = #{serviceFeeAmount,jdbcType=DECIMAL},", + "service_price = #{servicePrice,jdbcType=DECIMAL},", "pay_channel = #{payChannel,jdbcType=INTEGER},", "pay_serial_no = #{paySerialNo,jdbcType=VARCHAR},", "pay_type = #{payType,jdbcType=INTEGER},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java index 720529c..c52c4dd 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -124,6 +124,10 @@ public class BsOrderMeituanSqlProvider { sql.VALUES("service_fee_amount", "#{serviceFeeAmount,jdbcType=DECIMAL}"); } + if (record.getServicePrice() != null) { + sql.VALUES("service_price", "#{servicePrice,jdbcType=DECIMAL}"); + } + if (record.getPayChannel() != null) { sql.VALUES("pay_channel", "#{payChannel,jdbcType=INTEGER}"); } @@ -234,6 +238,7 @@ public class BsOrderMeituanSqlProvider { sql.SELECT("ent_pay_amount"); sql.SELECT("business_discount_pay_amount"); sql.SELECT("service_fee_amount"); + sql.SELECT("service_price"); sql.SELECT("pay_channel"); sql.SELECT("pay_serial_no"); sql.SELECT("pay_type"); @@ -370,6 +375,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("service_fee_amount = #{record.serviceFeeAmount,jdbcType=DECIMAL}"); } + if (record.getServicePrice() != null) { + sql.SET("service_price = #{record.servicePrice,jdbcType=DECIMAL}"); + } + if (record.getPayChannel() != null) { sql.SET("pay_channel = #{record.payChannel,jdbcType=INTEGER}"); } @@ -479,6 +488,7 @@ public class BsOrderMeituanSqlProvider { sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); sql.SET("service_fee_amount = #{record.serviceFeeAmount,jdbcType=DECIMAL}"); + sql.SET("service_price = #{record.servicePrice,jdbcType=DECIMAL}"); sql.SET("pay_channel = #{record.payChannel,jdbcType=INTEGER}"); sql.SET("pay_serial_no = #{record.paySerialNo,jdbcType=VARCHAR}"); sql.SET("pay_type = #{record.payType,jdbcType=INTEGER}"); @@ -604,6 +614,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("service_fee_amount = #{serviceFeeAmount,jdbcType=DECIMAL}"); } + if (record.getServicePrice() != null) { + sql.SET("service_price = #{servicePrice,jdbcType=DECIMAL}"); + } + if (record.getPayChannel() != null) { sql.SET("pay_channel = #{payChannel,jdbcType=INTEGER}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java index 23dc5dd..f896c8e 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -139,6 +139,11 @@ public class BsOrderMeituan implements Serializable { */ private BigDecimal serviceFeeAmount; + /** + * 平台服务费 + */ + private BigDecimal servicePrice; + /** * 支付渠道与bs_order订单表同步 */ @@ -431,6 +436,14 @@ public class BsOrderMeituan implements Serializable { this.serviceFeeAmount = serviceFeeAmount; } + public BigDecimal getServicePrice() { + return servicePrice; + } + + public void setServicePrice(BigDecimal servicePrice) { + this.servicePrice = servicePrice; + } + public Integer getPayChannel() { return payChannel; } @@ -620,6 +633,7 @@ public class BsOrderMeituan implements Serializable { && (this.getEntPayAmount() == null ? other.getEntPayAmount() == null : this.getEntPayAmount().equals(other.getEntPayAmount())) && (this.getBusinessDiscountPayAmount() == null ? other.getBusinessDiscountPayAmount() == null : this.getBusinessDiscountPayAmount().equals(other.getBusinessDiscountPayAmount())) && (this.getServiceFeeAmount() == null ? other.getServiceFeeAmount() == null : this.getServiceFeeAmount().equals(other.getServiceFeeAmount())) + && (this.getServicePrice() == null ? other.getServicePrice() == null : this.getServicePrice().equals(other.getServicePrice())) && (this.getPayChannel() == null ? other.getPayChannel() == null : this.getPayChannel().equals(other.getPayChannel())) && (this.getPaySerialNo() == null ? other.getPaySerialNo() == null : this.getPaySerialNo().equals(other.getPaySerialNo())) && (this.getPayType() == null ? other.getPayType() == null : this.getPayType().equals(other.getPayType())) @@ -670,6 +684,7 @@ public class BsOrderMeituan implements Serializable { result = prime * result + ((getEntPayAmount() == null) ? 0 : getEntPayAmount().hashCode()); result = prime * result + ((getBusinessDiscountPayAmount() == null) ? 0 : getBusinessDiscountPayAmount().hashCode()); result = prime * result + ((getServiceFeeAmount() == null) ? 0 : getServiceFeeAmount().hashCode()); + result = prime * result + ((getServicePrice() == null) ? 0 : getServicePrice().hashCode()); result = prime * result + ((getPayChannel() == null) ? 0 : getPayChannel().hashCode()); result = prime * result + ((getPaySerialNo() == null) ? 0 : getPaySerialNo().hashCode()); result = prime * result + ((getPayType() == null) ? 0 : getPayType().hashCode()); @@ -723,6 +738,7 @@ public class BsOrderMeituan implements Serializable { sb.append(", entPayAmount=").append(entPayAmount); sb.append(", businessDiscountPayAmount=").append(businessDiscountPayAmount); sb.append(", serviceFeeAmount=").append(serviceFeeAmount); + sb.append(", servicePrice=").append(servicePrice); sb.append(", payChannel=").append(payChannel); sb.append(", paySerialNo=").append(paySerialNo); sb.append(", payType=").append(payType); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java index 4d528e9..3d774f0 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -1746,6 +1746,66 @@ public class BsOrderMeituanExample { return (Criteria) this; } + public Criteria andServicePriceIsNull() { + addCriterion("service_price is null"); + return (Criteria) this; + } + + public Criteria andServicePriceIsNotNull() { + addCriterion("service_price is not null"); + return (Criteria) this; + } + + public Criteria andServicePriceEqualTo(BigDecimal value) { + addCriterion("service_price =", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceNotEqualTo(BigDecimal value) { + addCriterion("service_price <>", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceGreaterThan(BigDecimal value) { + addCriterion("service_price >", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("service_price >=", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceLessThan(BigDecimal value) { + addCriterion("service_price <", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceLessThanOrEqualTo(BigDecimal value) { + addCriterion("service_price <=", value, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceIn(List values) { + addCriterion("service_price in", values, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceNotIn(List values) { + addCriterion("service_price not in", values, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("service_price between", value1, value2, "servicePrice"); + return (Criteria) this; + } + + public Criteria andServicePriceNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("service_price not between", value1, value2, "servicePrice"); + return (Criteria) this; + } + public Criteria andPayChannelIsNull() { addCriterion("pay_channel is null"); return (Criteria) this; From 3f13db880595c9d22cb1511b8043cc1262397193 Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Wed, 18 Sep 2024 11:41:08 +0800 Subject: [PATCH 6/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 39 +++-- .../hfkj/dao/BsOrderMeituanSqlProvider.java | 32 ++++ .../java/com/hfkj/entity/BsOrderMeituan.java | 32 ++++ .../hfkj/entity/BsOrderMeituanExample.java | 140 ++++++++++++++++++ 4 files changed, 227 insertions(+), 16 deletions(-) diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java index dee2e0d..95feaeb 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -7,7 +7,6 @@ import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.DeleteProvider; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.InsertProvider; -import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; @@ -39,16 +38,18 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { int deleteByPrimaryKey(Long id); @Insert({ - "insert into bs_order_meituan (order_no, child_order_no, ", - "trade_no, sqt_biz_order_id, ", - "mer_id, mer_name, user_id, ", + "insert into bs_order_meituan (id, order_no, ", + "child_order_no, trade_no, ", + "sqt_biz_order_id, mer_id, ", + "mer_name, user_id, ", "user_phone, first_business_type, ", "second_business_type, ent_id, ", "img, goods_name, ", "trace_id, goods_count, ", "total_price, total_deduction_price, ", "coupon_discount_price, integral_discount_price, ", - "platform_code, pay_real_price, ", + "platform_code, notify_url, ", + "return_url, pay_real_price, ", "ent_pay_amount, business_discount_pay_amount, ", "service_fee_amount, service_price, ", "pay_channel, pay_serial_no, ", @@ -60,16 +61,18 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "finish_time, update_time, ", "exception_status, exception_msg, ", "ext_1, ext_2, ext_3)", - "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", - "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId,jdbcType=VARCHAR}, ", - "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", + "values (#{id,jdbcType=BIGINT}, #{orderNo,jdbcType=VARCHAR}, ", + "#{childOrderNo,jdbcType=VARCHAR}, #{tradeNo,jdbcType=VARCHAR}, ", + "#{sqtBizOrderId,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ", + "#{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", "#{userPhone,jdbcType=VARCHAR}, #{firstBusinessType,jdbcType=VARCHAR}, ", "#{secondBusinessType,jdbcType=VARCHAR}, #{entId,jdbcType=BIGINT}, ", "#{img,jdbcType=VARCHAR}, #{goodsName,jdbcType=VARCHAR}, ", "#{traceId,jdbcType=VARCHAR}, #{goodsCount,jdbcType=INTEGER}, ", "#{totalPrice,jdbcType=DECIMAL}, #{totalDeductionPrice,jdbcType=DECIMAL}, ", "#{couponDiscountPrice,jdbcType=DECIMAL}, #{integralDiscountPrice,jdbcType=DECIMAL}, ", - "#{platformCode,jdbcType=VARCHAR}, #{payRealPrice,jdbcType=DECIMAL}, ", + "#{platformCode,jdbcType=VARCHAR}, #{notifyUrl,jdbcType=VARCHAR}, ", + "#{returnUrl,jdbcType=VARCHAR}, #{payRealPrice,jdbcType=DECIMAL}, ", "#{entPayAmount,jdbcType=DECIMAL}, #{businessDiscountPayAmount,jdbcType=DECIMAL}, ", "#{serviceFeeAmount,jdbcType=DECIMAL}, #{servicePrice,jdbcType=DECIMAL}, ", "#{payChannel,jdbcType=INTEGER}, #{paySerialNo,jdbcType=VARCHAR}, ", @@ -82,11 +85,9 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "#{exceptionStatus,jdbcType=BIT}, #{exceptionMsg,jdbcType=VARCHAR}, ", "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) - @Options(useGeneratedKeys=true,keyProperty="id") int insert(BsOrderMeituan record); @InsertProvider(type=BsOrderMeituanSqlProvider.class, method="insertSelective") - @Options(useGeneratedKeys=true,keyProperty="id") int insertSelective(BsOrderMeituan record); @SelectProvider(type=BsOrderMeituanSqlProvider.class, method="selectByExample") @@ -112,6 +113,8 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="coupon_discount_price", property="couponDiscountPrice", jdbcType=JdbcType.DECIMAL), @Result(column="integral_discount_price", property="integralDiscountPrice", jdbcType=JdbcType.DECIMAL), @Result(column="platform_code", property="platformCode", jdbcType=JdbcType.VARCHAR), + @Result(column="notify_url", property="notifyUrl", jdbcType=JdbcType.VARCHAR), + @Result(column="return_url", property="returnUrl", jdbcType=JdbcType.VARCHAR), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @@ -144,11 +147,11 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "id, order_no, child_order_no, trade_no, sqt_biz_order_id, mer_id, mer_name, ", "user_id, user_phone, first_business_type, second_business_type, ent_id, img, ", "goods_name, trace_id, goods_count, total_price, total_deduction_price, coupon_discount_price, ", - "integral_discount_price, platform_code, pay_real_price, ent_pay_amount, business_discount_pay_amount, ", - "service_fee_amount, service_price, pay_channel, pay_serial_no, pay_type, `status`, ", - "meituan_status, staff_info, business_info, trade_expiring_time, create_time, ", - "pay_time, cancel_time, refund_time, finish_time, update_time, exception_status, ", - "exception_msg, ext_1, ext_2, ext_3", + "integral_discount_price, platform_code, notify_url, return_url, pay_real_price, ", + "ent_pay_amount, business_discount_pay_amount, service_fee_amount, service_price, ", + "pay_channel, pay_serial_no, pay_type, `status`, meituan_status, staff_info, ", + "business_info, trade_expiring_time, create_time, pay_time, cancel_time, refund_time, ", + "finish_time, update_time, exception_status, exception_msg, ext_1, ext_2, ext_3", "from bs_order_meituan", "where id = #{id,jdbcType=BIGINT}" }) @@ -174,6 +177,8 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="coupon_discount_price", property="couponDiscountPrice", jdbcType=JdbcType.DECIMAL), @Result(column="integral_discount_price", property="integralDiscountPrice", jdbcType=JdbcType.DECIMAL), @Result(column="platform_code", property="platformCode", jdbcType=JdbcType.VARCHAR), + @Result(column="notify_url", property="notifyUrl", jdbcType=JdbcType.VARCHAR), + @Result(column="return_url", property="returnUrl", jdbcType=JdbcType.VARCHAR), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @@ -232,6 +237,8 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "coupon_discount_price = #{couponDiscountPrice,jdbcType=DECIMAL},", "integral_discount_price = #{integralDiscountPrice,jdbcType=DECIMAL},", "platform_code = #{platformCode,jdbcType=VARCHAR},", + "notify_url = #{notifyUrl,jdbcType=VARCHAR},", + "return_url = #{returnUrl,jdbcType=VARCHAR},", "pay_real_price = #{payRealPrice,jdbcType=DECIMAL},", "ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL},", "business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java index c52c4dd..efc65f5 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -28,6 +28,10 @@ public class BsOrderMeituanSqlProvider { SQL sql = new SQL(); sql.INSERT_INTO("bs_order_meituan"); + if (record.getId() != null) { + sql.VALUES("id", "#{id,jdbcType=BIGINT}"); + } + if (record.getOrderNo() != null) { sql.VALUES("order_no", "#{orderNo,jdbcType=VARCHAR}"); } @@ -108,6 +112,14 @@ public class BsOrderMeituanSqlProvider { sql.VALUES("platform_code", "#{platformCode,jdbcType=VARCHAR}"); } + if (record.getNotifyUrl() != null) { + sql.VALUES("notify_url", "#{notifyUrl,jdbcType=VARCHAR}"); + } + + if (record.getReturnUrl() != null) { + sql.VALUES("return_url", "#{returnUrl,jdbcType=VARCHAR}"); + } + if (record.getPayRealPrice() != null) { sql.VALUES("pay_real_price", "#{payRealPrice,jdbcType=DECIMAL}"); } @@ -234,6 +246,8 @@ public class BsOrderMeituanSqlProvider { sql.SELECT("coupon_discount_price"); sql.SELECT("integral_discount_price"); sql.SELECT("platform_code"); + sql.SELECT("notify_url"); + sql.SELECT("return_url"); sql.SELECT("pay_real_price"); sql.SELECT("ent_pay_amount"); sql.SELECT("business_discount_pay_amount"); @@ -359,6 +373,14 @@ public class BsOrderMeituanSqlProvider { sql.SET("platform_code = #{record.platformCode,jdbcType=VARCHAR}"); } + if (record.getNotifyUrl() != null) { + sql.SET("notify_url = #{record.notifyUrl,jdbcType=VARCHAR}"); + } + + if (record.getReturnUrl() != null) { + sql.SET("return_url = #{record.returnUrl,jdbcType=VARCHAR}"); + } + if (record.getPayRealPrice() != null) { sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); } @@ -484,6 +506,8 @@ public class BsOrderMeituanSqlProvider { sql.SET("coupon_discount_price = #{record.couponDiscountPrice,jdbcType=DECIMAL}"); sql.SET("integral_discount_price = #{record.integralDiscountPrice,jdbcType=DECIMAL}"); sql.SET("platform_code = #{record.platformCode,jdbcType=VARCHAR}"); + sql.SET("notify_url = #{record.notifyUrl,jdbcType=VARCHAR}"); + sql.SET("return_url = #{record.returnUrl,jdbcType=VARCHAR}"); sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); @@ -598,6 +622,14 @@ public class BsOrderMeituanSqlProvider { sql.SET("platform_code = #{platformCode,jdbcType=VARCHAR}"); } + if (record.getNotifyUrl() != null) { + sql.SET("notify_url = #{notifyUrl,jdbcType=VARCHAR}"); + } + + if (record.getReturnUrl() != null) { + sql.SET("return_url = #{returnUrl,jdbcType=VARCHAR}"); + } + if (record.getPayRealPrice() != null) { sql.SET("pay_real_price = #{payRealPrice,jdbcType=DECIMAL}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java index f896c8e..8f6594b 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -119,6 +119,16 @@ public class BsOrderMeituan implements Serializable { */ private String platformCode; + /** + * 支付成功通知地址:客户平台支付成功时,后台发 POST 请求,通知美团企业版支付成功的调用地址 + */ + private String notifyUrl; + + /** + * 支付成功跳转地址:客户平台支付成功时,前端重定向地址,通常是订单详情页 + */ + private String returnUrl; + /** * 实付金额 */ @@ -404,6 +414,22 @@ public class BsOrderMeituan implements Serializable { this.platformCode = platformCode; } + public String getNotifyUrl() { + return notifyUrl; + } + + public void setNotifyUrl(String notifyUrl) { + this.notifyUrl = notifyUrl; + } + + public String getReturnUrl() { + return returnUrl; + } + + public void setReturnUrl(String returnUrl) { + this.returnUrl = returnUrl; + } + public BigDecimal getPayRealPrice() { return payRealPrice; } @@ -629,6 +655,8 @@ public class BsOrderMeituan implements Serializable { && (this.getCouponDiscountPrice() == null ? other.getCouponDiscountPrice() == null : this.getCouponDiscountPrice().equals(other.getCouponDiscountPrice())) && (this.getIntegralDiscountPrice() == null ? other.getIntegralDiscountPrice() == null : this.getIntegralDiscountPrice().equals(other.getIntegralDiscountPrice())) && (this.getPlatformCode() == null ? other.getPlatformCode() == null : this.getPlatformCode().equals(other.getPlatformCode())) + && (this.getNotifyUrl() == null ? other.getNotifyUrl() == null : this.getNotifyUrl().equals(other.getNotifyUrl())) + && (this.getReturnUrl() == null ? other.getReturnUrl() == null : this.getReturnUrl().equals(other.getReturnUrl())) && (this.getPayRealPrice() == null ? other.getPayRealPrice() == null : this.getPayRealPrice().equals(other.getPayRealPrice())) && (this.getEntPayAmount() == null ? other.getEntPayAmount() == null : this.getEntPayAmount().equals(other.getEntPayAmount())) && (this.getBusinessDiscountPayAmount() == null ? other.getBusinessDiscountPayAmount() == null : this.getBusinessDiscountPayAmount().equals(other.getBusinessDiscountPayAmount())) @@ -680,6 +708,8 @@ public class BsOrderMeituan implements Serializable { result = prime * result + ((getCouponDiscountPrice() == null) ? 0 : getCouponDiscountPrice().hashCode()); result = prime * result + ((getIntegralDiscountPrice() == null) ? 0 : getIntegralDiscountPrice().hashCode()); result = prime * result + ((getPlatformCode() == null) ? 0 : getPlatformCode().hashCode()); + result = prime * result + ((getNotifyUrl() == null) ? 0 : getNotifyUrl().hashCode()); + result = prime * result + ((getReturnUrl() == null) ? 0 : getReturnUrl().hashCode()); result = prime * result + ((getPayRealPrice() == null) ? 0 : getPayRealPrice().hashCode()); result = prime * result + ((getEntPayAmount() == null) ? 0 : getEntPayAmount().hashCode()); result = prime * result + ((getBusinessDiscountPayAmount() == null) ? 0 : getBusinessDiscountPayAmount().hashCode()); @@ -734,6 +764,8 @@ public class BsOrderMeituan implements Serializable { sb.append(", couponDiscountPrice=").append(couponDiscountPrice); sb.append(", integralDiscountPrice=").append(integralDiscountPrice); sb.append(", platformCode=").append(platformCode); + sb.append(", notifyUrl=").append(notifyUrl); + sb.append(", returnUrl=").append(returnUrl); sb.append(", payRealPrice=").append(payRealPrice); sb.append(", entPayAmount=").append(entPayAmount); sb.append(", businessDiscountPayAmount=").append(businessDiscountPayAmount); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java index 3d774f0..e92cfb4 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -1506,6 +1506,146 @@ public class BsOrderMeituanExample { return (Criteria) this; } + public Criteria andNotifyUrlIsNull() { + addCriterion("notify_url is null"); + return (Criteria) this; + } + + public Criteria andNotifyUrlIsNotNull() { + addCriterion("notify_url is not null"); + return (Criteria) this; + } + + public Criteria andNotifyUrlEqualTo(String value) { + addCriterion("notify_url =", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlNotEqualTo(String value) { + addCriterion("notify_url <>", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlGreaterThan(String value) { + addCriterion("notify_url >", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlGreaterThanOrEqualTo(String value) { + addCriterion("notify_url >=", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlLessThan(String value) { + addCriterion("notify_url <", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlLessThanOrEqualTo(String value) { + addCriterion("notify_url <=", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlLike(String value) { + addCriterion("notify_url like", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlNotLike(String value) { + addCriterion("notify_url not like", value, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlIn(List values) { + addCriterion("notify_url in", values, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlNotIn(List values) { + addCriterion("notify_url not in", values, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlBetween(String value1, String value2) { + addCriterion("notify_url between", value1, value2, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andNotifyUrlNotBetween(String value1, String value2) { + addCriterion("notify_url not between", value1, value2, "notifyUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlIsNull() { + addCriterion("return_url is null"); + return (Criteria) this; + } + + public Criteria andReturnUrlIsNotNull() { + addCriterion("return_url is not null"); + return (Criteria) this; + } + + public Criteria andReturnUrlEqualTo(String value) { + addCriterion("return_url =", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlNotEqualTo(String value) { + addCriterion("return_url <>", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlGreaterThan(String value) { + addCriterion("return_url >", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlGreaterThanOrEqualTo(String value) { + addCriterion("return_url >=", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlLessThan(String value) { + addCriterion("return_url <", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlLessThanOrEqualTo(String value) { + addCriterion("return_url <=", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlLike(String value) { + addCriterion("return_url like", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlNotLike(String value) { + addCriterion("return_url not like", value, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlIn(List values) { + addCriterion("return_url in", values, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlNotIn(List values) { + addCriterion("return_url not in", values, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlBetween(String value1, String value2) { + addCriterion("return_url between", value1, value2, "returnUrl"); + return (Criteria) this; + } + + public Criteria andReturnUrlNotBetween(String value1, String value2) { + addCriterion("return_url not between", value1, value2, "returnUrl"); + return (Criteria) this; + } + public Criteria andPayRealPriceIsNull() { addCriterion("pay_real_price is null"); return (Criteria) this; From 66ace06ed8586d60cf642b1392eac0bdf9d51277 Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Wed, 18 Sep 2024 11:48:30 +0800 Subject: [PATCH 7/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 75 ++++++++++--------- .../hfkj/dao/BsOrderMeituanSqlProvider.java | 18 ++++- .../java/com/hfkj/entity/BsOrderMeituan.java | 16 ++++ .../hfkj/entity/BsOrderMeituanExample.java | 60 +++++++++++++++ 4 files changed, 131 insertions(+), 38 deletions(-) diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java index 95feaeb..d602131 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -7,6 +7,7 @@ import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.DeleteProvider; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Options; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; @@ -38,10 +39,9 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { int deleteByPrimaryKey(Long id); @Insert({ - "insert into bs_order_meituan (id, order_no, ", - "child_order_no, trade_no, ", - "sqt_biz_order_id, mer_id, ", - "mer_name, user_id, ", + "insert into bs_order_meituan (order_no, child_order_no, ", + "trade_no, sqt_biz_order_id, ", + "mer_id, mer_name, user_id, ", "user_phone, first_business_type, ", "second_business_type, ent_id, ", "img, goods_name, ", @@ -50,21 +50,21 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "coupon_discount_price, integral_discount_price, ", "platform_code, notify_url, ", "return_url, pay_real_price, ", - "ent_pay_amount, business_discount_pay_amount, ", - "service_fee_amount, service_price, ", - "pay_channel, pay_serial_no, ", - "pay_type, `status`, ", - "meituan_status, staff_info, ", - "business_info, trade_expiring_time, ", - "create_time, pay_time, ", - "cancel_time, refund_time, ", - "finish_time, update_time, ", - "exception_status, exception_msg, ", - "ext_1, ext_2, ext_3)", - "values (#{id,jdbcType=BIGINT}, #{orderNo,jdbcType=VARCHAR}, ", - "#{childOrderNo,jdbcType=VARCHAR}, #{tradeNo,jdbcType=VARCHAR}, ", - "#{sqtBizOrderId,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ", - "#{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", + "ent_pay_amount, trade_amount, ", + "business_discount_pay_amount, service_fee_amount, ", + "service_price, pay_channel, ", + "pay_serial_no, pay_type, ", + "`status`, meituan_status, ", + "staff_info, business_info, ", + "trade_expiring_time, create_time, ", + "pay_time, cancel_time, ", + "refund_time, finish_time, ", + "update_time, exception_status, ", + "exception_msg, ext_1, ", + "ext_2, ext_3)", + "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", + "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId,jdbcType=VARCHAR}, ", + "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", "#{userPhone,jdbcType=VARCHAR}, #{firstBusinessType,jdbcType=VARCHAR}, ", "#{secondBusinessType,jdbcType=VARCHAR}, #{entId,jdbcType=BIGINT}, ", "#{img,jdbcType=VARCHAR}, #{goodsName,jdbcType=VARCHAR}, ", @@ -73,21 +73,24 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "#{couponDiscountPrice,jdbcType=DECIMAL}, #{integralDiscountPrice,jdbcType=DECIMAL}, ", "#{platformCode,jdbcType=VARCHAR}, #{notifyUrl,jdbcType=VARCHAR}, ", "#{returnUrl,jdbcType=VARCHAR}, #{payRealPrice,jdbcType=DECIMAL}, ", - "#{entPayAmount,jdbcType=DECIMAL}, #{businessDiscountPayAmount,jdbcType=DECIMAL}, ", - "#{serviceFeeAmount,jdbcType=DECIMAL}, #{servicePrice,jdbcType=DECIMAL}, ", - "#{payChannel,jdbcType=INTEGER}, #{paySerialNo,jdbcType=VARCHAR}, ", - "#{payType,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, ", - "#{meituanStatus,jdbcType=INTEGER}, #{staffInfo,jdbcType=VARCHAR}, ", - "#{businessInfo,jdbcType=VARCHAR}, #{tradeExpiringTime,jdbcType=TIMESTAMP}, ", - "#{createTime,jdbcType=TIMESTAMP}, #{payTime,jdbcType=TIMESTAMP}, ", - "#{cancelTime,jdbcType=TIMESTAMP}, #{refundTime,jdbcType=TIMESTAMP}, ", - "#{finishTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, ", - "#{exceptionStatus,jdbcType=BIT}, #{exceptionMsg,jdbcType=VARCHAR}, ", - "#{ext1,jdbcType=VARCHAR}, #{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" + "#{entPayAmount,jdbcType=DECIMAL}, #{tradeAmount,jdbcType=DECIMAL}, ", + "#{businessDiscountPayAmount,jdbcType=DECIMAL}, #{serviceFeeAmount,jdbcType=DECIMAL}, ", + "#{servicePrice,jdbcType=DECIMAL}, #{payChannel,jdbcType=INTEGER}, ", + "#{paySerialNo,jdbcType=VARCHAR}, #{payType,jdbcType=INTEGER}, ", + "#{status,jdbcType=INTEGER}, #{meituanStatus,jdbcType=INTEGER}, ", + "#{staffInfo,jdbcType=VARCHAR}, #{businessInfo,jdbcType=VARCHAR}, ", + "#{tradeExpiringTime,jdbcType=TIMESTAMP}, #{createTime,jdbcType=TIMESTAMP}, ", + "#{payTime,jdbcType=TIMESTAMP}, #{cancelTime,jdbcType=TIMESTAMP}, ", + "#{refundTime,jdbcType=TIMESTAMP}, #{finishTime,jdbcType=TIMESTAMP}, ", + "#{updateTime,jdbcType=TIMESTAMP}, #{exceptionStatus,jdbcType=BIT}, ", + "#{exceptionMsg,jdbcType=VARCHAR}, #{ext1,jdbcType=VARCHAR}, ", + "#{ext2,jdbcType=VARCHAR}, #{ext3,jdbcType=VARCHAR})" }) + @Options(useGeneratedKeys=true,keyProperty="id") int insert(BsOrderMeituan record); @InsertProvider(type=BsOrderMeituanSqlProvider.class, method="insertSelective") + @Options(useGeneratedKeys=true,keyProperty="id") int insertSelective(BsOrderMeituan record); @SelectProvider(type=BsOrderMeituanSqlProvider.class, method="selectByExample") @@ -117,6 +120,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="return_url", property="returnUrl", jdbcType=JdbcType.VARCHAR), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="trade_amount", property="tradeAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_price", property="servicePrice", jdbcType=JdbcType.DECIMAL), @@ -148,10 +152,11 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "user_id, user_phone, first_business_type, second_business_type, ent_id, img, ", "goods_name, trace_id, goods_count, total_price, total_deduction_price, coupon_discount_price, ", "integral_discount_price, platform_code, notify_url, return_url, pay_real_price, ", - "ent_pay_amount, business_discount_pay_amount, service_fee_amount, service_price, ", - "pay_channel, pay_serial_no, pay_type, `status`, meituan_status, staff_info, ", - "business_info, trade_expiring_time, create_time, pay_time, cancel_time, refund_time, ", - "finish_time, update_time, exception_status, exception_msg, ext_1, ext_2, ext_3", + "ent_pay_amount, trade_amount, business_discount_pay_amount, service_fee_amount, ", + "service_price, pay_channel, pay_serial_no, pay_type, `status`, meituan_status, ", + "staff_info, business_info, trade_expiring_time, create_time, pay_time, cancel_time, ", + "refund_time, finish_time, update_time, exception_status, exception_msg, ext_1, ", + "ext_2, ext_3", "from bs_order_meituan", "where id = #{id,jdbcType=BIGINT}" }) @@ -181,6 +186,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="return_url", property="returnUrl", jdbcType=JdbcType.VARCHAR), @Result(column="pay_real_price", property="payRealPrice", jdbcType=JdbcType.DECIMAL), @Result(column="ent_pay_amount", property="entPayAmount", jdbcType=JdbcType.DECIMAL), + @Result(column="trade_amount", property="tradeAmount", jdbcType=JdbcType.DECIMAL), @Result(column="business_discount_pay_amount", property="businessDiscountPayAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_fee_amount", property="serviceFeeAmount", jdbcType=JdbcType.DECIMAL), @Result(column="service_price", property="servicePrice", jdbcType=JdbcType.DECIMAL), @@ -241,6 +247,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "return_url = #{returnUrl,jdbcType=VARCHAR},", "pay_real_price = #{payRealPrice,jdbcType=DECIMAL},", "ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL},", + "trade_amount = #{tradeAmount,jdbcType=DECIMAL},", "business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL},", "service_fee_amount = #{serviceFeeAmount,jdbcType=DECIMAL},", "service_price = #{servicePrice,jdbcType=DECIMAL},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java index efc65f5..5ff8fa9 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -28,10 +28,6 @@ public class BsOrderMeituanSqlProvider { SQL sql = new SQL(); sql.INSERT_INTO("bs_order_meituan"); - if (record.getId() != null) { - sql.VALUES("id", "#{id,jdbcType=BIGINT}"); - } - if (record.getOrderNo() != null) { sql.VALUES("order_no", "#{orderNo,jdbcType=VARCHAR}"); } @@ -128,6 +124,10 @@ public class BsOrderMeituanSqlProvider { sql.VALUES("ent_pay_amount", "#{entPayAmount,jdbcType=DECIMAL}"); } + if (record.getTradeAmount() != null) { + sql.VALUES("trade_amount", "#{tradeAmount,jdbcType=DECIMAL}"); + } + if (record.getBusinessDiscountPayAmount() != null) { sql.VALUES("business_discount_pay_amount", "#{businessDiscountPayAmount,jdbcType=DECIMAL}"); } @@ -250,6 +250,7 @@ public class BsOrderMeituanSqlProvider { sql.SELECT("return_url"); sql.SELECT("pay_real_price"); sql.SELECT("ent_pay_amount"); + sql.SELECT("trade_amount"); sql.SELECT("business_discount_pay_amount"); sql.SELECT("service_fee_amount"); sql.SELECT("service_price"); @@ -389,6 +390,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); } + if (record.getTradeAmount() != null) { + sql.SET("trade_amount = #{record.tradeAmount,jdbcType=DECIMAL}"); + } + if (record.getBusinessDiscountPayAmount() != null) { sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); } @@ -510,6 +515,7 @@ public class BsOrderMeituanSqlProvider { sql.SET("return_url = #{record.returnUrl,jdbcType=VARCHAR}"); sql.SET("pay_real_price = #{record.payRealPrice,jdbcType=DECIMAL}"); sql.SET("ent_pay_amount = #{record.entPayAmount,jdbcType=DECIMAL}"); + sql.SET("trade_amount = #{record.tradeAmount,jdbcType=DECIMAL}"); sql.SET("business_discount_pay_amount = #{record.businessDiscountPayAmount,jdbcType=DECIMAL}"); sql.SET("service_fee_amount = #{record.serviceFeeAmount,jdbcType=DECIMAL}"); sql.SET("service_price = #{record.servicePrice,jdbcType=DECIMAL}"); @@ -638,6 +644,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("ent_pay_amount = #{entPayAmount,jdbcType=DECIMAL}"); } + if (record.getTradeAmount() != null) { + sql.SET("trade_amount = #{tradeAmount,jdbcType=DECIMAL}"); + } + if (record.getBusinessDiscountPayAmount() != null) { sql.SET("business_discount_pay_amount = #{businessDiscountPayAmount,jdbcType=DECIMAL}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java index 8f6594b..a2ef03c 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -139,6 +139,11 @@ public class BsOrderMeituan implements Serializable { */ private BigDecimal entPayAmount; + /** + * 支付金额(不包含服务费),单位元,支持小数点后两位 + */ + private BigDecimal tradeAmount; + /** * 优惠承担支付金额,单位元;NULL 代表无优惠承担金额 */ @@ -446,6 +451,14 @@ public class BsOrderMeituan implements Serializable { this.entPayAmount = entPayAmount; } + public BigDecimal getTradeAmount() { + return tradeAmount; + } + + public void setTradeAmount(BigDecimal tradeAmount) { + this.tradeAmount = tradeAmount; + } + public BigDecimal getBusinessDiscountPayAmount() { return businessDiscountPayAmount; } @@ -659,6 +672,7 @@ public class BsOrderMeituan implements Serializable { && (this.getReturnUrl() == null ? other.getReturnUrl() == null : this.getReturnUrl().equals(other.getReturnUrl())) && (this.getPayRealPrice() == null ? other.getPayRealPrice() == null : this.getPayRealPrice().equals(other.getPayRealPrice())) && (this.getEntPayAmount() == null ? other.getEntPayAmount() == null : this.getEntPayAmount().equals(other.getEntPayAmount())) + && (this.getTradeAmount() == null ? other.getTradeAmount() == null : this.getTradeAmount().equals(other.getTradeAmount())) && (this.getBusinessDiscountPayAmount() == null ? other.getBusinessDiscountPayAmount() == null : this.getBusinessDiscountPayAmount().equals(other.getBusinessDiscountPayAmount())) && (this.getServiceFeeAmount() == null ? other.getServiceFeeAmount() == null : this.getServiceFeeAmount().equals(other.getServiceFeeAmount())) && (this.getServicePrice() == null ? other.getServicePrice() == null : this.getServicePrice().equals(other.getServicePrice())) @@ -712,6 +726,7 @@ public class BsOrderMeituan implements Serializable { result = prime * result + ((getReturnUrl() == null) ? 0 : getReturnUrl().hashCode()); result = prime * result + ((getPayRealPrice() == null) ? 0 : getPayRealPrice().hashCode()); result = prime * result + ((getEntPayAmount() == null) ? 0 : getEntPayAmount().hashCode()); + result = prime * result + ((getTradeAmount() == null) ? 0 : getTradeAmount().hashCode()); result = prime * result + ((getBusinessDiscountPayAmount() == null) ? 0 : getBusinessDiscountPayAmount().hashCode()); result = prime * result + ((getServiceFeeAmount() == null) ? 0 : getServiceFeeAmount().hashCode()); result = prime * result + ((getServicePrice() == null) ? 0 : getServicePrice().hashCode()); @@ -768,6 +783,7 @@ public class BsOrderMeituan implements Serializable { sb.append(", returnUrl=").append(returnUrl); sb.append(", payRealPrice=").append(payRealPrice); sb.append(", entPayAmount=").append(entPayAmount); + sb.append(", tradeAmount=").append(tradeAmount); sb.append(", businessDiscountPayAmount=").append(businessDiscountPayAmount); sb.append(", serviceFeeAmount=").append(serviceFeeAmount); sb.append(", servicePrice=").append(servicePrice); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java index e92cfb4..9ea99aa 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -1766,6 +1766,66 @@ public class BsOrderMeituanExample { return (Criteria) this; } + public Criteria andTradeAmountIsNull() { + addCriterion("trade_amount is null"); + return (Criteria) this; + } + + public Criteria andTradeAmountIsNotNull() { + addCriterion("trade_amount is not null"); + return (Criteria) this; + } + + public Criteria andTradeAmountEqualTo(BigDecimal value) { + addCriterion("trade_amount =", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountNotEqualTo(BigDecimal value) { + addCriterion("trade_amount <>", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountGreaterThan(BigDecimal value) { + addCriterion("trade_amount >", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("trade_amount >=", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountLessThan(BigDecimal value) { + addCriterion("trade_amount <", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountLessThanOrEqualTo(BigDecimal value) { + addCriterion("trade_amount <=", value, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountIn(List values) { + addCriterion("trade_amount in", values, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountNotIn(List values) { + addCriterion("trade_amount not in", values, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("trade_amount between", value1, value2, "tradeAmount"); + return (Criteria) this; + } + + public Criteria andTradeAmountNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("trade_amount not between", value1, value2, "tradeAmount"); + return (Criteria) this; + } + public Criteria andBusinessDiscountPayAmountIsNull() { addCriterion("business_discount_pay_amount is null"); return (Criteria) this; From 306e4b9a4860a4db2e5cf6fbf668eb6ad2fc9472 Mon Sep 17 00:00:00 2001 From: YuanYe <418471657@qq.com> Date: Fri, 20 Sep 2024 10:21:04 +0800 Subject: [PATCH 8/8] 1 --- .../com/hfkj/dao/BsOrderMeituanMapper.java | 31 ++++---- .../hfkj/dao/BsOrderMeituanSqlProvider.java | 14 ++++ .../java/com/hfkj/entity/BsOrderMeituan.java | 24 ++++++- .../hfkj/entity/BsOrderMeituanExample.java | 70 +++++++++++++++++++ 4 files changed, 125 insertions(+), 14 deletions(-) diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java index d602131..5e0d76a 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanMapper.java @@ -40,8 +40,9 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Insert({ "insert into bs_order_meituan (order_no, child_order_no, ", - "trade_no, sqt_biz_order_id, ", - "mer_id, mer_name, user_id, ", + "trade_no, third_trade_no, ", + "sqt_biz_order_id, mer_id, ", + "mer_name, user_id, ", "user_phone, first_business_type, ", "second_business_type, ent_id, ", "img, goods_name, ", @@ -63,8 +64,9 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "exception_msg, ext_1, ", "ext_2, ext_3)", "values (#{orderNo,jdbcType=VARCHAR}, #{childOrderNo,jdbcType=VARCHAR}, ", - "#{tradeNo,jdbcType=VARCHAR}, #{sqtBizOrderId,jdbcType=VARCHAR}, ", - "#{merId,jdbcType=BIGINT}, #{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", + "#{tradeNo,jdbcType=VARCHAR}, #{thirdTradeNo,jdbcType=VARCHAR}, ", + "#{sqtBizOrderId,jdbcType=VARCHAR}, #{merId,jdbcType=BIGINT}, ", + "#{merName,jdbcType=VARCHAR}, #{userId,jdbcType=BIGINT}, ", "#{userPhone,jdbcType=VARCHAR}, #{firstBusinessType,jdbcType=VARCHAR}, ", "#{secondBusinessType,jdbcType=VARCHAR}, #{entId,jdbcType=BIGINT}, ", "#{img,jdbcType=VARCHAR}, #{goodsName,jdbcType=VARCHAR}, ", @@ -99,6 +101,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), + @Result(column="third_trade_no", property="thirdTradeNo", jdbcType=JdbcType.VARCHAR), @Result(column="sqt_biz_order_id", property="sqtBizOrderId", jdbcType=JdbcType.VARCHAR), @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), @@ -148,15 +151,15 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Select({ "select", - "id, order_no, child_order_no, trade_no, sqt_biz_order_id, mer_id, mer_name, ", - "user_id, user_phone, first_business_type, second_business_type, ent_id, img, ", - "goods_name, trace_id, goods_count, total_price, total_deduction_price, coupon_discount_price, ", - "integral_discount_price, platform_code, notify_url, return_url, pay_real_price, ", - "ent_pay_amount, trade_amount, business_discount_pay_amount, service_fee_amount, ", - "service_price, pay_channel, pay_serial_no, pay_type, `status`, meituan_status, ", - "staff_info, business_info, trade_expiring_time, create_time, pay_time, cancel_time, ", - "refund_time, finish_time, update_time, exception_status, exception_msg, ext_1, ", - "ext_2, ext_3", + "id, order_no, child_order_no, trade_no, third_trade_no, sqt_biz_order_id, mer_id, ", + "mer_name, user_id, user_phone, first_business_type, second_business_type, ent_id, ", + "img, goods_name, trace_id, goods_count, total_price, total_deduction_price, ", + "coupon_discount_price, integral_discount_price, platform_code, notify_url, return_url, ", + "pay_real_price, ent_pay_amount, trade_amount, business_discount_pay_amount, ", + "service_fee_amount, service_price, pay_channel, pay_serial_no, pay_type, `status`, ", + "meituan_status, staff_info, business_info, trade_expiring_time, create_time, ", + "pay_time, cancel_time, refund_time, finish_time, update_time, exception_status, ", + "exception_msg, ext_1, ext_2, ext_3", "from bs_order_meituan", "where id = #{id,jdbcType=BIGINT}" }) @@ -165,6 +168,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { @Result(column="order_no", property="orderNo", jdbcType=JdbcType.VARCHAR), @Result(column="child_order_no", property="childOrderNo", jdbcType=JdbcType.VARCHAR), @Result(column="trade_no", property="tradeNo", jdbcType=JdbcType.VARCHAR), + @Result(column="third_trade_no", property="thirdTradeNo", jdbcType=JdbcType.VARCHAR), @Result(column="sqt_biz_order_id", property="sqtBizOrderId", jdbcType=JdbcType.VARCHAR), @Result(column="mer_id", property="merId", jdbcType=JdbcType.BIGINT), @Result(column="mer_name", property="merName", jdbcType=JdbcType.VARCHAR), @@ -226,6 +230,7 @@ public interface BsOrderMeituanMapper extends BsOrderMeituanMapperExt { "set order_no = #{orderNo,jdbcType=VARCHAR},", "child_order_no = #{childOrderNo,jdbcType=VARCHAR},", "trade_no = #{tradeNo,jdbcType=VARCHAR},", + "third_trade_no = #{thirdTradeNo,jdbcType=VARCHAR},", "sqt_biz_order_id = #{sqtBizOrderId,jdbcType=VARCHAR},", "mer_id = #{merId,jdbcType=BIGINT},", "mer_name = #{merName,jdbcType=VARCHAR},", diff --git a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java index 5ff8fa9..f7a8fda 100644 --- a/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java +++ b/service/src/main/java/com/hfkj/dao/BsOrderMeituanSqlProvider.java @@ -40,6 +40,10 @@ public class BsOrderMeituanSqlProvider { sql.VALUES("trade_no", "#{tradeNo,jdbcType=VARCHAR}"); } + if (record.getThirdTradeNo() != null) { + sql.VALUES("third_trade_no", "#{thirdTradeNo,jdbcType=VARCHAR}"); + } + if (record.getSqtBizOrderId() != null) { sql.VALUES("sqt_biz_order_id", "#{sqtBizOrderId,jdbcType=VARCHAR}"); } @@ -229,6 +233,7 @@ public class BsOrderMeituanSqlProvider { sql.SELECT("order_no"); sql.SELECT("child_order_no"); sql.SELECT("trade_no"); + sql.SELECT("third_trade_no"); sql.SELECT("sqt_biz_order_id"); sql.SELECT("mer_id"); sql.SELECT("mer_name"); @@ -306,6 +311,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); } + if (record.getThirdTradeNo() != null) { + sql.SET("third_trade_no = #{record.thirdTradeNo,jdbcType=VARCHAR}"); + } + if (record.getSqtBizOrderId() != null) { sql.SET("sqt_biz_order_id = #{record.sqtBizOrderId,jdbcType=VARCHAR}"); } @@ -494,6 +503,7 @@ public class BsOrderMeituanSqlProvider { sql.SET("order_no = #{record.orderNo,jdbcType=VARCHAR}"); sql.SET("child_order_no = #{record.childOrderNo,jdbcType=VARCHAR}"); sql.SET("trade_no = #{record.tradeNo,jdbcType=VARCHAR}"); + sql.SET("third_trade_no = #{record.thirdTradeNo,jdbcType=VARCHAR}"); sql.SET("sqt_biz_order_id = #{record.sqtBizOrderId,jdbcType=VARCHAR}"); sql.SET("mer_id = #{record.merId,jdbcType=BIGINT}"); sql.SET("mer_name = #{record.merName,jdbcType=VARCHAR}"); @@ -560,6 +570,10 @@ public class BsOrderMeituanSqlProvider { sql.SET("trade_no = #{tradeNo,jdbcType=VARCHAR}"); } + if (record.getThirdTradeNo() != null) { + sql.SET("third_trade_no = #{thirdTradeNo,jdbcType=VARCHAR}"); + } + if (record.getSqtBizOrderId() != null) { sql.SET("sqt_biz_order_id = #{sqtBizOrderId,jdbcType=VARCHAR}"); } diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java index a2ef03c..87e526d 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituan.java @@ -34,6 +34,11 @@ public class BsOrderMeituan implements Serializable { */ private String tradeNo; + /** + * 业务交易号,每笔支付的唯一标识,需要以此字段做幂等处理 + */ + private String thirdTradeNo; + /** * 美团企业版订单号 */ @@ -175,7 +180,13 @@ public class BsOrderMeituan implements Serializable { private Integer payType; /** - * 1:待发货 2:已发货 3:配送中 4:已送达 5:已取消 6:退货中 7:已退货 8:待支付 0:删除 + * 订单状态: +1. 待支付 +2. 已支付 +3. 已完成 +4. 已退款 +5. 已取消 +6. 退款中 */ private Integer status; @@ -283,6 +294,14 @@ public class BsOrderMeituan implements Serializable { this.tradeNo = tradeNo; } + public String getThirdTradeNo() { + return thirdTradeNo; + } + + public void setThirdTradeNo(String thirdTradeNo) { + this.thirdTradeNo = thirdTradeNo; + } + public String getSqtBizOrderId() { return sqtBizOrderId; } @@ -651,6 +670,7 @@ public class BsOrderMeituan implements Serializable { && (this.getOrderNo() == null ? other.getOrderNo() == null : this.getOrderNo().equals(other.getOrderNo())) && (this.getChildOrderNo() == null ? other.getChildOrderNo() == null : this.getChildOrderNo().equals(other.getChildOrderNo())) && (this.getTradeNo() == null ? other.getTradeNo() == null : this.getTradeNo().equals(other.getTradeNo())) + && (this.getThirdTradeNo() == null ? other.getThirdTradeNo() == null : this.getThirdTradeNo().equals(other.getThirdTradeNo())) && (this.getSqtBizOrderId() == null ? other.getSqtBizOrderId() == null : this.getSqtBizOrderId().equals(other.getSqtBizOrderId())) && (this.getMerId() == null ? other.getMerId() == null : this.getMerId().equals(other.getMerId())) && (this.getMerName() == null ? other.getMerName() == null : this.getMerName().equals(other.getMerName())) @@ -705,6 +725,7 @@ public class BsOrderMeituan implements Serializable { result = prime * result + ((getOrderNo() == null) ? 0 : getOrderNo().hashCode()); result = prime * result + ((getChildOrderNo() == null) ? 0 : getChildOrderNo().hashCode()); result = prime * result + ((getTradeNo() == null) ? 0 : getTradeNo().hashCode()); + result = prime * result + ((getThirdTradeNo() == null) ? 0 : getThirdTradeNo().hashCode()); result = prime * result + ((getSqtBizOrderId() == null) ? 0 : getSqtBizOrderId().hashCode()); result = prime * result + ((getMerId() == null) ? 0 : getMerId().hashCode()); result = prime * result + ((getMerName() == null) ? 0 : getMerName().hashCode()); @@ -762,6 +783,7 @@ public class BsOrderMeituan implements Serializable { sb.append(", orderNo=").append(orderNo); sb.append(", childOrderNo=").append(childOrderNo); sb.append(", tradeNo=").append(tradeNo); + sb.append(", thirdTradeNo=").append(thirdTradeNo); sb.append(", sqtBizOrderId=").append(sqtBizOrderId); sb.append(", merId=").append(merId); sb.append(", merName=").append(merName); diff --git a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java index 9ea99aa..d8f94c2 100644 --- a/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java +++ b/service/src/main/java/com/hfkj/entity/BsOrderMeituanExample.java @@ -396,6 +396,76 @@ public class BsOrderMeituanExample { return (Criteria) this; } + public Criteria andThirdTradeNoIsNull() { + addCriterion("third_trade_no is null"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoIsNotNull() { + addCriterion("third_trade_no is not null"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoEqualTo(String value) { + addCriterion("third_trade_no =", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoNotEqualTo(String value) { + addCriterion("third_trade_no <>", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoGreaterThan(String value) { + addCriterion("third_trade_no >", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoGreaterThanOrEqualTo(String value) { + addCriterion("third_trade_no >=", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoLessThan(String value) { + addCriterion("third_trade_no <", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoLessThanOrEqualTo(String value) { + addCriterion("third_trade_no <=", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoLike(String value) { + addCriterion("third_trade_no like", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoNotLike(String value) { + addCriterion("third_trade_no not like", value, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoIn(List values) { + addCriterion("third_trade_no in", values, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoNotIn(List values) { + addCriterion("third_trade_no not in", values, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoBetween(String value1, String value2) { + addCriterion("third_trade_no between", value1, value2, "thirdTradeNo"); + return (Criteria) this; + } + + public Criteria andThirdTradeNoNotBetween(String value1, String value2) { + addCriterion("third_trade_no not between", value1, value2, "thirdTradeNo"); + return (Criteria) this; + } + public Criteria andSqtBizOrderIdIsNull() { addCriterion("sqt_biz_order_id is null"); return (Criteria) this;