From 8d9931e46e2d91f5f6ea9ee19980e0cca2738cad Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Wed, 15 May 2024 15:37:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=9A=E5=9C=BA?= =?UTF-8?q?=E5=9C=B0=E9=A2=84=E5=AE=9A=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../booking/controller/PeriodController.java | 77 ++++++++++++++++- .../com/gxwebsoft/booking/entity/Field.java | 35 ++++++-- .../com/gxwebsoft/booking/entity/Period.java | 5 ++ .../gxwebsoft/booking/param/PeriodParam.java | 8 ++ .../service/impl/FieldServiceImpl.java | 28 +------ .../cms/controller/WebsiteController.java | 1 - .../shop/controller/OrderController.java | 57 +++++-------- .../shop/controller/OrderInfoController.java | 32 +++---- .../controller/OrderInfoLogController.java | 2 +- .../controller/WxPayNotifyController.java | 15 ++-- .../java/com/gxwebsoft/shop/entity/Order.java | 84 +++++++++---------- .../com/gxwebsoft/shop/entity/OrderInfo.java | 62 ++++++++------ .../gxwebsoft/shop/entity/OrderInfoLog.java | 19 +++-- .../shop/mapper/OrderInfoLogMapper.java | 2 +- .../shop/mapper/OrderInfoMapper.java | 4 +- .../gxwebsoft/shop/mapper/OrderMapper.java | 6 +- .../shop/mapper/xml/OrderInfoLogMapper.xml | 12 +-- .../shop/mapper/xml/OrderInfoMapper.xml | 52 +++++++----- .../gxwebsoft/shop/mapper/xml/OrderMapper.xml | 80 ++++++++++-------- .../shop/param/OrderInfoLogParam.java | 10 +-- .../gxwebsoft/shop/param/OrderInfoParam.java | 59 +++++++------ .../com/gxwebsoft/shop/param/OrderParam.java | 73 +++++++++------- .../shop/service/OrderInfoLogService.java | 2 +- .../shop/service/OrderInfoService.java | 6 +- .../gxwebsoft/shop/service/OrderService.java | 4 +- .../service/impl/OrderInfoLogServiceImpl.java | 2 +- .../service/impl/OrderInfoServiceImpl.java | 4 +- .../shop/service/impl/OrderServiceImpl.java | 40 ++++----- .../gxwebsoft/generator/ShopGenerator.java | 6 +- 29 files changed, 454 insertions(+), 333 deletions(-) diff --git a/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java b/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java index 380d5b5..ab0e9d8 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java @@ -1,6 +1,15 @@ package com.gxwebsoft.booking.controller; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.booking.entity.Field; +import com.gxwebsoft.booking.param.FieldParam; +import com.gxwebsoft.booking.service.FieldService; +import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.booking.service.PeriodService; import com.gxwebsoft.booking.entity.Period; @@ -11,13 +20,18 @@ import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.annotation.OperationLog; import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.OrderInfo; +import com.gxwebsoft.shop.service.OrderInfoService; +import com.gxwebsoft.shop.service.OrderService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 场地时段控制器 @@ -31,6 +45,12 @@ import java.util.List; public class PeriodController extends BaseController { @Resource private PeriodService periodService; + @Resource + private FieldService fieldService; + @Resource + private OrderInfoService orderInfoService; + @Resource + private RedisUtil redisUtil; @ApiOperation("分页查询场地时段") @GetMapping("/page") @@ -49,7 +69,53 @@ public class PeriodController extends BaseController { final String startTime = String.format("%02d", hour).concat(String.format("%02d", minute)); param.setStartTime(startTime); } - return success(periodService.listRel(param)); + if (param.getDateTime() == null) { + return success(periodService.listRel(param)); + } + + + /* ====== 查询可预定时间段 ====== */ + List list = periodService.listRel(param); + + // 为空处理 + if (CollectionUtils.isEmpty(list)) { + return fail("该场馆没有添加时间段,或预约时间已过",list); + } + + // 今日订单信息 按Key分组(组合规则:日期+时间段+场馆id+场地id) + Map> collectKey; + List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getDateTime, param.getDateTime()).eq(OrderInfo::getMerchantId,param.getMerchantId())); + collectKey = orderInfoList.stream().collect(Collectors.groupingBy(OrderInfo::getOrderCode)); + + final FieldParam fieldParam = new FieldParam(); + fieldParam.setIsStatus(param.getIsStatus()); + fieldParam.setMerchantId(param.getMerchantId()); + List fields = fieldService.listRel(fieldParam); + + redisUtil.set(param.getMerchantId().toString(),fields); + + list.forEach(d -> { + // 查询可预定场地 + final String string = redisUtil.get(param.getMerchantId().toString()); + // 字符串转集合(从redis取数据并转为List) + final List fieldList = JSONObject.parseArray(string, Field.class); + fieldList.forEach(f -> { + final String key = getKey(param.getDateTime().concat(d.getTimePeriod().concat(d.getMerchantId().toString()).concat(f.getFieldId().toString()))); + final List orderInfos = collectKey.get(key); + if (!CollectionUtils.isEmpty(orderInfos)) { + final OrderInfo orderInfo = orderInfos.get(0); + if (orderInfo.getOrderCode().equals(key)) { + f.setSold(true); + } + } + f.setOrderKey(key); + f.setTimePeriod(d.getTimePeriod()); + f.setPeriodId(d.getPeriodId()); + f.setPrice(d.getPrice()); + }); + d.setFieldList(fieldList); + }); + return success(list); } @PreAuthorize("hasAuthority('booking:period:list')") @@ -119,4 +185,11 @@ public class PeriodController extends BaseController { return fail("删除失败"); } + private String getKey (String text){ + text = text.replaceAll(" +",""); + text = text.replaceAll("-",""); + text = text.replaceAll(":",""); + return text; + } + } diff --git a/src/main/java/com/gxwebsoft/booking/entity/Field.java b/src/main/java/com/gxwebsoft/booking/entity/Field.java index 2b9e46f..eb54e9f 100644 --- a/src/main/java/com/gxwebsoft/booking/entity/Field.java +++ b/src/main/java/com/gxwebsoft/booking/entity/Field.java @@ -1,13 +1,18 @@ package com.gxwebsoft.booking.entity; +import cn.hutool.core.clone.CloneSupport; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; + +import java.math.BigDecimal; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; +import java.util.List; +import com.gxwebsoft.shop.entity.OrderInfo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -23,7 +28,7 @@ import lombok.EqualsAndHashCode; @EqualsAndHashCode(callSuper = false) @ApiModel(value = "Field对象", description = "场馆场地") @TableName("booking_field") -public class Field implements Serializable { +public class Field extends CloneSupport implements Serializable { private static final long serialVersionUID = 1L; @TableId(value = "field_id", type = IdType.AUTO) @@ -71,12 +76,32 @@ public class Field implements Serializable { @ApiModelProperty(value = "创建时间") private Date createTime; - @ApiModelProperty(value = "是否被占用") + @ApiModelProperty(value = "订单信息") @TableField(exist = false) - private Boolean isOccupied; + private List orderInfoList; - @ApiModelProperty(value = "1全场,2半场") + @ApiModelProperty(value = "已售") @TableField(exist = false) - private Integer type; + private Boolean sold; + + @ApiModelProperty(value = "已售半场") + @TableField(exist = false) + private Boolean half; + + @ApiModelProperty(value = "数据组合") + @TableField(exist = false) + private String orderKey; + + @ApiModelProperty(value = "时间段ID") + @TableField(exist = false) + private Integer periodId; + + @ApiModelProperty(value = "时间段") + @TableField(exist = false) + private String timePeriod; + + @ApiModelProperty(value = "场地价格") + @TableField(exist = false) + private BigDecimal price; } diff --git a/src/main/java/com/gxwebsoft/booking/entity/Period.java b/src/main/java/com/gxwebsoft/booking/entity/Period.java index 3841957..b5745f5 100644 --- a/src/main/java/com/gxwebsoft/booking/entity/Period.java +++ b/src/main/java/com/gxwebsoft/booking/entity/Period.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; +import java.util.List; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -77,4 +78,8 @@ public class Period implements Serializable { @ApiModelProperty(value = "创建时间") private Date createTime; + @ApiModelProperty(value = "该时间段内的场地列表") + private List fieldList; + + } diff --git a/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java b/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java index 90ca30c..9661c94 100644 --- a/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java +++ b/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java @@ -76,4 +76,12 @@ public class PeriodParam extends BaseParam { @QueryField(type = QueryType.EQ) private Integer status; + @ApiModelProperty(value = "预定日期") + @QueryField(type = QueryType.EQ) + private String dateTime; + + @ApiModelProperty(value = "是否半场") + @QueryField(type = QueryType.EQ) + private Boolean half; + } diff --git a/src/main/java/com/gxwebsoft/booking/service/impl/FieldServiceImpl.java b/src/main/java/com/gxwebsoft/booking/service/impl/FieldServiceImpl.java index 6427f8e..b8e9331 100644 --- a/src/main/java/com/gxwebsoft/booking/service/impl/FieldServiceImpl.java +++ b/src/main/java/com/gxwebsoft/booking/service/impl/FieldServiceImpl.java @@ -3,9 +3,11 @@ package com.gxwebsoft.booking.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.booking.entity.Field; +import com.gxwebsoft.booking.entity.Period; import com.gxwebsoft.booking.mapper.FieldMapper; import com.gxwebsoft.booking.param.FieldParam; import com.gxwebsoft.booking.service.FieldService; +import com.gxwebsoft.booking.service.PeriodService; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.shop.entity.OrderInfo; @@ -16,11 +18,8 @@ import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.stream.Collectors; -import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; - /** * 场馆场地Service实现 * @@ -32,6 +31,8 @@ public class FieldServiceImpl extends ServiceImpl implements @Resource private OrderInfoService orderInfoService; + @Resource + private PeriodService periodService; @Override public PageResult pageRel(FieldParam param) { @@ -47,27 +48,6 @@ public class FieldServiceImpl extends ServiceImpl implements // 排序 PageParam page = new PageParam<>(); page.setDefaultOrder("sort_number desc, create_time desc"); - // 是否已被预定 - if (param.getDateTime() != null) { - System.out.println("是否已被预定 = "); - System.out.println("param = " + param); - final List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getOrderTime, param.getDateTime()).eq(OrderInfo::getPayStatus,1).or().eq(OrderInfo::getPayStatus,3)); - System.out.println("orderInfoList = " + orderInfoList); - if (!CollectionUtils.isEmpty(orderInfoList)) { - Map> collect = orderInfoList.stream().collect(Collectors.groupingBy(OrderInfo::getFid)); - System.out.println("collect = " + collect); - for (Field item: list){ - System.out.println("item = " + item); - System.out.println("collect.get(item.getFieldId()) = " + collect.get(item.getFieldId())); - final List orderInfos = collect.get(item.getFieldId()); - if (!CollectionUtils.isEmpty(orderInfos)) { - item.setIsOccupied(true); - OrderInfo orderInfo = orderInfos.get(0); - item.setType(orderInfo.getType()); - } - } - } - } return page.sortRecords(list); } diff --git a/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java b/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java index bee38e1..a995790 100644 --- a/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java +++ b/src/main/java/com/gxwebsoft/cms/controller/WebsiteController.java @@ -84,7 +84,6 @@ public class WebsiteController extends BaseController { String key = "SiteInfo:" + tenantId; final String siteInfo = redisUtil.get(key); String access_token = JwtUtil.getAccessToken(request); - System.out.println("access_token = " + access_token); // redisUtil.set("Domain:ffai.cn",10157); // redisUtil.set("Domain:www.xn--15qx69a6lbn8t0tlmve.com",10157); // redisUtil.set("Domain:xn--15qx69a6lbn8t0tlmve.com",10157); diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java index 19acb05..c22d25f 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -1,10 +1,8 @@ package com.gxwebsoft.shop.controller; -import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONObject; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.shop.entity.OrderInfo; import com.gxwebsoft.shop.service.OrderInfoService; @@ -17,13 +15,6 @@ import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.BatchParam; import com.gxwebsoft.common.core.annotation.OperationLog; import com.gxwebsoft.common.system.entity.User; -import com.wechat.pay.java.core.Config; -import com.wechat.pay.java.core.RSAConfig; -import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; -import com.wechat.pay.java.service.payments.jsapi.model.Amount; -import com.wechat.pay.java.service.payments.jsapi.model.Payer; -import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; -import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.security.access.prepost.PreAuthorize; @@ -31,19 +22,15 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.stream.Collectors; /** - * 预约订单控制器 + * 订单控制器 * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ -@Api(tags = "预约订单管理") +@Api(tags = "订单管理") @RestController @RequestMapping("/api/shop/order") public class OrderController extends BaseController { @@ -52,15 +39,14 @@ public class OrderController extends BaseController { @Resource private OrderInfoService orderInfoService; - @ApiOperation("分页查询预约订单") + @ApiOperation("分页查询订单") @GetMapping("/page") public ApiResult> page(OrderParam param) { // 使用关联查询 return success(orderService.pageRel(param)); } - @PreAuthorize("hasAuthority('shop:order:list')") - @ApiOperation("查询全部预约订单") + @ApiOperation("查询全部订单") @GetMapping() public ApiResult> list(OrderParam param) { // 使用关联查询 @@ -68,7 +54,7 @@ public class OrderController extends BaseController { } @PreAuthorize("hasAuthority('shop:order:list')") - @ApiOperation("根据id查询预约订单") + @ApiOperation("根据id查询订单") @GetMapping("/{id}") public ApiResult get(@PathVariable("id") Integer id) { // 使用关联查询 @@ -79,21 +65,22 @@ public class OrderController extends BaseController { @ApiOperation("下单") @PostMapping() public ApiResult save(@RequestBody Order order) { + System.out.println("order = " + order); // 记录当前登录用户id User loginUser = getLoginUser(); if (loginUser == null) { return fail("请先登录"); } // 微信openid(必填) - if(StrUtil.isBlank(loginUser.getOpenid())){ + if (StrUtil.isBlank(loginUser.getOpenid())) { return fail("微信openid(必填)"); } // 商品描述(必填) - if(StrUtil.isBlank(order.getComments())){ + if (StrUtil.isBlank(order.getComments())) { return fail("商品描述(必填)"); } // 微信支付(商品金额不能为0) - if(order.getPayType().equals(1)){ + if (order.getPayType().equals(1)) { if (order.getTotalPrice().compareTo(BigDecimal.ZERO) == 0) { return fail("商品金额不能为0"); } @@ -109,26 +96,28 @@ public class OrderController extends BaseController { order.setPhone(loginUser.getPhone()); order.setUserId(loginUser.getUserId()); // List collect = order.getOrderInfoList().stream().map(OrderInfo::getStartTime).collect(Collectors.toList()); - OrderInfo orderInfo = order.getOrderInfoList().get(0); - order.setStartTime(DateUtil.formatTime(orderInfo.getStartTime())); - order.setVersion(10); +// OrderInfo orderInfo = order.getOrderInfoList().get(0); +// order.setStartTime(DateUtil.formatTime(orderInfo.getStartTime())); +// order.setVersion(10); + System.out.println("order = " + order); if (orderService.save(order)) { order.getOrderInfoList().forEach(d -> { - d.setOid(order.getOrderId()); + d.setOrderId(order.getOrderId()); d.setTimeFlag(timeMillis); d.setVersion(10); - d.setOrderTime(d.getOrderTime()); + d.setUserId(getLoginUser().getUserId()); + d.setDateTime(d.getDateTime()); }); orderInfoService.saveBatch(order.getOrderInfoList()); // 创建微信订单 if (order.getPayType().equals(1)) { - return success("下单成功",orderService.createWxOrder(order)); + return success("下单成功", orderService.createWxOrder(order)); } } return fail("下单失败"); } - @ApiOperation("修改预约订单") + @ApiOperation("修改订单") @PutMapping() public ApiResult update(@RequestBody Order order) { if (orderService.updateById(order)) { @@ -137,7 +126,7 @@ public class OrderController extends BaseController { return fail("修改失败"); } - @ApiOperation("删除预约订单") + @ApiOperation("删除订单") @DeleteMapping("/{id}") public ApiResult remove(@PathVariable("id") Integer id) { if (orderService.removeById(id)) { @@ -146,7 +135,7 @@ public class OrderController extends BaseController { return fail("删除失败"); } - @ApiOperation("批量添加预约订单") + @ApiOperation("批量添加订单") @PostMapping("/batch") public ApiResult saveBatch(@RequestBody List list) { if (orderService.saveBatch(list)) { @@ -155,7 +144,7 @@ public class OrderController extends BaseController { return fail("添加失败"); } - @ApiOperation("批量修改预约订单") + @ApiOperation("批量修改订单") @PutMapping("/batch") public ApiResult removeBatch(@RequestBody BatchParam batchParam) { if (batchParam.update(orderService, "order_id")) { @@ -164,7 +153,7 @@ public class OrderController extends BaseController { return fail("修改失败"); } - @ApiOperation("批量删除预约订单") + @ApiOperation("批量删除订单") @DeleteMapping("/batch") public ApiResult removeBatch(@RequestBody List ids) { if (orderService.removeByIds(ids)) { diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderInfoController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderInfoController.java index 1972e85..767f813 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderInfoController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderInfoController.java @@ -19,26 +19,26 @@ import javax.annotation.Resource; import java.util.List; /** - * 控制器 + * 场地控制器 * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ -@Api(tags = "管理") +@Api(tags = "场地管理") @RestController @RequestMapping("/api/shop/order-info") public class OrderInfoController extends BaseController { @Resource private OrderInfoService orderInfoService; - @ApiOperation("分页查询") + @ApiOperation("分页查询场地") @GetMapping("/page") public ApiResult> page(OrderInfoParam param) { // 使用关联查询 return success(orderInfoService.pageRel(param)); } - @ApiOperation("查询全部") + @ApiOperation("查询全部场地") @GetMapping() public ApiResult> list(OrderInfoParam param) { // 使用关联查询 @@ -46,28 +46,28 @@ public class OrderInfoController extends BaseController { } @PreAuthorize("hasAuthority('shop:orderInfo:list')") - @ApiOperation("根据id查询") + @ApiOperation("根据id查询场地") @GetMapping("/{id}") public ApiResult get(@PathVariable("id") Integer id) { // 使用关联查询 return success(orderInfoService.getByIdRel(id)); } - @ApiOperation("添加") + @ApiOperation("添加场地") @PostMapping() public ApiResult save(@RequestBody OrderInfo orderInfo) { // 记录当前登录用户id - User loginUser = getLoginUser(); - if (loginUser != null) { - orderInfo.setUserId(loginUser.getUserId()); - } + // User loginUser = getLoginUser(); + // if (loginUser != null) { + // orderInfo.setUserId(loginUser.getUserId()); + // } if (orderInfoService.save(orderInfo)) { return success("添加成功"); } return fail("添加失败"); } - @ApiOperation("修改") + @ApiOperation("修改场地") @PutMapping() public ApiResult update(@RequestBody OrderInfo orderInfo) { if (orderInfoService.updateById(orderInfo)) { @@ -76,7 +76,7 @@ public class OrderInfoController extends BaseController { return fail("修改失败"); } - @ApiOperation("删除") + @ApiOperation("删除场地") @DeleteMapping("/{id}") public ApiResult remove(@PathVariable("id") Integer id) { if (orderInfoService.removeById(id)) { @@ -85,7 +85,7 @@ public class OrderInfoController extends BaseController { return fail("删除失败"); } - @ApiOperation("批量添加") + @ApiOperation("批量添加场地") @PostMapping("/batch") public ApiResult saveBatch(@RequestBody List list) { if (orderInfoService.saveBatch(list)) { @@ -94,7 +94,7 @@ public class OrderInfoController extends BaseController { return fail("添加失败"); } - @ApiOperation("批量修改") + @ApiOperation("批量修改场地") @PutMapping("/batch") public ApiResult removeBatch(@RequestBody BatchParam batchParam) { if (batchParam.update(orderInfoService, "id")) { @@ -103,7 +103,7 @@ public class OrderInfoController extends BaseController { return fail("修改失败"); } - @ApiOperation("批量删除") + @ApiOperation("批量删除场地") @DeleteMapping("/batch") public ApiResult removeBatch(@RequestBody List ids) { if (orderInfoService.removeByIds(ids)) { diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderInfoLogController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderInfoLogController.java index 6975eff..17bece8 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderInfoLogController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderInfoLogController.java @@ -22,7 +22,7 @@ import java.util.List; * 订单核销控制器 * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ @Api(tags = "订单核销管理") @RestController diff --git a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java index 4af6c67..829dc5d 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java @@ -8,6 +8,7 @@ import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.shop.entity.Order; import com.gxwebsoft.shop.entity.Payment; import com.gxwebsoft.shop.service.OrderService; +import com.sun.xml.internal.bind.v2.TODO; import com.wechat.pay.java.core.notification.NotificationConfig; import com.wechat.pay.java.core.notification.NotificationParser; import com.wechat.pay.java.core.notification.RSANotificationConfig; @@ -22,9 +23,6 @@ import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.Map; -import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_NO_PAY; -import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; - /** * 会员特权购买记录表控制器 * @@ -102,22 +100,25 @@ public class WxPayNotifyController extends BaseController { if (StrUtil.equals("支付成功", tradeStateDesc)) { // 1. 查询要处理的订单 Order order = orderService.getByOutTradeNo(outTradeNo); - System.out.println("order = " + order); // 2. 已支付则跳过 - if (order.getPayStatus().equals(PAY_STATUS_SUCCESS)) { + if (order.getPayStatus().equals(true)) { return "SUCCESS"; } // 2. 未支付则处理更新订单状态 - if (order.getPayStatus().equals(PAY_STATUS_NO_PAY)) { + if (order.getPayStatus().equals(false)) { // 5. TODO 处理订单状态 order.setPayTime(DateUtil.date()); - order.setPayStatus(PAY_STATUS_SUCCESS); + order.setPayStatus(true); order.setTransactionId(transactionId); // 实际付款金额:Integer除以100后转BigDecimal DecimalFormat df = new DecimalFormat("0.00"); final String format = df.format(total / 100); order.setPayPrice(new BigDecimal(format)); + System.out.println("实际付款金额 = " + order); orderService.updateByOutTradeNo(order); + // 6. TODO 同步更新订单明细的支付状态 + + return "SUCCESS"; } } diff --git a/src/main/java/com/gxwebsoft/shop/entity/Order.java b/src/main/java/com/gxwebsoft/shop/entity/Order.java index 3fb78a3..f2995c9 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/Order.java +++ b/src/main/java/com/gxwebsoft/shop/entity/Order.java @@ -4,6 +4,7 @@ import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.*; +import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -14,14 +15,14 @@ import lombok.Data; import lombok.EqualsAndHashCode; /** - * 预约订单 + * 订单 * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) -@ApiModel(value = "Order对象", description = "预约订单") +@ApiModel(value = "Order对象", description = "订单") @TableName("shop_order") public class Order implements Serializable { private static final long serialVersionUID = 1L; @@ -34,31 +35,28 @@ public class Order implements Serializable { private String orderNo; @ApiModelProperty(value = "微信支付订单号") - private String wechatOrder; + private String transactionId; @ApiModelProperty(value = "微信退款订单号") private String refundOrder; - @ApiModelProperty(value = "场馆id用于权限判断") + @ApiModelProperty(value = "商户ID") private Integer merchantId; - @ApiModelProperty(value = "用户id") - private Integer userId; - @ApiModelProperty(value = "使用的优惠券id") private Integer couponId; @ApiModelProperty(value = "使用的会员卡id") - private Integer cardId; + private String cardId; @ApiModelProperty(value = "关联管理员id") - private Integer aid; - - @ApiModelProperty(value = "核销管理员id") private Integer adminId; + @ApiModelProperty(value = "核销管理员id") + private Integer confirmId; + @ApiModelProperty(value = "IC卡号") - private String code; + private String icCard; @ApiModelProperty(value = "真实姓名") private String realName; @@ -90,27 +88,24 @@ public class Order implements Serializable { @ApiModelProperty(value = "教练id") private Integer coachId; - @ApiModelProperty(value = "支付流水号") - private String transactionId; - - @ApiModelProperty(value = "1微信支付,2积分,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡") + @ApiModelProperty(value = "0余额支付, 1微信支付,2积分,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡") private Integer payType; - @ApiModelProperty(value = "1已付款,2未付款") - private Integer payStatus; + @ApiModelProperty(value = "0未付款,1已付款") + private Boolean payStatus; - @ApiModelProperty(value = "1已完成,2未使用,3已取消,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") private Integer orderStatus; @ApiModelProperty(value = "优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡") - private Integer type; + private Integer couponType; + + @ApiModelProperty(value = "优惠说明") + private String couponDesc; @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") private String qrcode; - @ApiModelProperty(value = "优惠说明") - private String desc; - @ApiModelProperty(value = "vip月卡年卡、ic月卡年卡回退次数") private Integer returnNum; @@ -120,49 +115,48 @@ public class Order implements Serializable { @ApiModelProperty(value = "预约详情开始时间数组") private String startTime; - @ApiModelProperty(value = "是否已开具发票:1已开发票,2未开发票,3不能开具发票") - private Integer isInvoice; + @ApiModelProperty(value = "是否已开具发票:0未开发票,1已开发票,2不能开具发票") + private Boolean isInvoice; - @ApiModelProperty(value = "下单时间") - private Long addTime; - - private Integer updateTime; - - @ApiModelProperty(value = "付款时间") + @ApiModelProperty(value = "支付时间") private Date payTime; @ApiModelProperty(value = "退款时间") - private Integer refundTime; + private Date refundTime; @ApiModelProperty(value = "申请退款时间") - private Integer refundApplyTime; + private Date refundApplyTime; - @ApiModelProperty(value = "对账情况:1=已对账;2=未对账;3=已对账,金额对不上;4=未查询到该订单") + @ApiModelProperty(value = "对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单") private Integer checkBill; - @ApiModelProperty(value = "系统版本") + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "系统版本号 0当前版本 value=其他版本") private Integer version; + @ApiModelProperty(value = "用户id") + private Integer userId; + @ApiModelProperty(value = "备注") private String comments; + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + @ApiModelProperty(value = "是否删除, 0否, 1是") @TableLogic private Integer deleted; - @ApiModelProperty(value = "创建时间") - private Date createTime; - @ApiModelProperty(value = "租户id") private Integer tenantId; - @ApiModelProperty(value = "商户名称") - @TableField(exist = false) - private String merchantName; + @ApiModelProperty(value = "修改时间") + private Date updateTime; - @ApiModelProperty(value = "商户图标") - @TableField(exist = false) - private String merchantAvatar; + @ApiModelProperty(value = "创建时间") + private Date createTime; @ApiModelProperty(value = "微信OPENID,用于微信支付") @TableField(exist = false) diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java b/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java index 2e39707..3d6c7c3 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java @@ -5,7 +5,9 @@ import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDate; import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalTime; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; @@ -16,36 +18,40 @@ import lombok.Data; import lombok.EqualsAndHashCode; /** - * + * 场地 * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) -@ApiModel(value = "OrderInfo对象", description = "") +@ApiModel(value = "OrderInfo对象", description = "场地") @TableName("shop_order_info") public class OrderInfo implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "自增ID") @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "关联订单表id") - private Integer oid; + private Integer orderId; - @ApiModelProperty(value = "关联场馆id") - private Integer sid; + @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") + private Integer merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; @ApiModelProperty(value = "关联场地id") - private Integer fid; + private Integer fieldId; - @ApiModelProperty(value = "场地") + @ApiModelProperty(value = "场地名称") private String fieldName; - @ApiModelProperty(value = "预约时间段") - private String timePeriod; - @ApiModelProperty(value = "单价") private BigDecimal price; @@ -58,42 +64,46 @@ public class OrderInfo implements Serializable { @ApiModelProperty(value = "儿童人数") private Integer childrenNum; - @ApiModelProperty(value = "1已付款,2未付款,3无需付款或占用状态") + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") private Integer payStatus; - @ApiModelProperty(value = "是否免费:1免费、2收费") - private Integer isFree; + @ApiModelProperty(value = "是否免费:0收费、1免费") + private Boolean isFree; - @ApiModelProperty(value = "是否支持儿童票:1支持,2不支持") - private Integer isChildren; + @ApiModelProperty(value = "是否支持儿童票:0不支持、1支持") + private Boolean isChildren; - @ApiModelProperty(value = "系统版本号 10新版 0旧版") + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") private Integer version; - @ApiModelProperty(value = "预订类型:1全场,2半场") - private Integer type; + @ApiModelProperty(value = "预订类型:0全场,1半场") + private Boolean isHalf; - @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") - private String mergeData; + @ApiModelProperty(value = "预约时间段") + private String timePeriod; - @ApiModelProperty(value = "备注") - private String comments; + @ApiModelProperty(value = "预定日期") + private String dateTime; @ApiModelProperty(value = "开场时间") - private Date startTime; + private String startTime; - @ApiModelProperty(value = "下单时间") - private Date orderTime; + @ApiModelProperty(value = "结束时间") + private String endTime; @ApiModelProperty(value = "毫秒时间戳") private Long timeFlag; + @ApiModelProperty(value = "备注") + private String comments; + @ApiModelProperty(value = "用户id") private Integer userId; @ApiModelProperty(value = "租户id") private Integer tenantId; + @ApiModelProperty(value = "更新时间") private Date updateTime; @ApiModelProperty(value = "创建时间") diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderInfoLog.java b/src/main/java/com/gxwebsoft/shop/entity/OrderInfoLog.java index 81329a7..5f5a226 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/OrderInfoLog.java +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderInfoLog.java @@ -3,7 +3,10 @@ package com.gxwebsoft.shop.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; import java.io.Serializable; +import java.util.Date; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -13,7 +16,7 @@ import lombok.EqualsAndHashCode; * 订单核销 * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) @@ -26,21 +29,21 @@ public class OrderInfoLog implements Serializable { private Integer id; @ApiModelProperty(value = "关联订单表id") - private Integer oid; + private Integer orderId; - @ApiModelProperty(value = "关联场馆id") - private Integer sid; + @ApiModelProperty(value = "关联商户ID") + private Integer merchantId; @ApiModelProperty(value = "关联场地id") - private Integer fid; + private Integer fieldId; @ApiModelProperty(value = "核销数量") private Boolean useNum; - @ApiModelProperty(value = "核销时间") - private Integer createTime; - @ApiModelProperty(value = "租户id") private Integer tenantId; + @ApiModelProperty(value = "创建时间") + private Date createTime; + } diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoLogMapper.java index 9aacc5c..45b7316 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoLogMapper.java +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoLogMapper.java @@ -12,7 +12,7 @@ import java.util.List; * 订单核销Mapper * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ public interface OrderInfoLogMapper extends BaseMapper { diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoMapper.java index cf1bec2..5aa9dea 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoMapper.java +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderInfoMapper.java @@ -9,10 +9,10 @@ import org.apache.ibatis.annotations.Param; import java.util.List; /** - * Mapper + * 场地Mapper * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ public interface OrderInfoMapper extends BaseMapper { diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java index bcba09d..4593f45 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java @@ -10,10 +10,10 @@ import org.apache.ibatis.annotations.Param; import java.util.List; /** - * 预约订单Mapper + * 订单Mapper * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ public interface OrderMapper extends BaseMapper { @@ -37,7 +37,7 @@ public interface OrderMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") - List getByOutTradeNo(OrderParam param); + List getByOutTradeNo(@Param("param") OrderParam param); @InterceptorIgnore(tenantLine = "true") void updateByOutTradeNo(@Param("param") Order outTradeNo); diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoLogMapper.xml index 4b427b6..9102086 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoLogMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoLogMapper.xml @@ -10,14 +10,14 @@ AND a.id = #{param.id} - - AND a.oid = #{param.oid} + + AND a.order_id = #{param.orderId} - - AND a.sid = #{param.sid} + + AND a.merchant_id = #{param.merchantId} - - AND a.fid = #{param.fid} + + AND a.field_id = #{param.fieldId} AND a.use_num = #{param.useNum} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml index 16f7ef5..0e40748 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml @@ -4,30 +4,31 @@ - SELECT a.* + SELECT a.*, b.pay_status FROM shop_order_info a + LEFT JOIN shop_order b ON a.order_id = b.order_id AND a.id = #{param.id} - - AND a.oid = #{param.oid} + + AND a.order_id = #{param.orderId} - - AND a.sid = #{param.sid} + + AND a.order_code LIKE CONCAT('%', #{param.orderCode}, '%') - - AND a.fid = #{param.fid} + + AND a.merchant_id = #{param.merchantId} - - AND a.site_name LIKE CONCAT('%', #{param.siteName}, '%') + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.field_id = #{param.fieldId} AND a.field_name LIKE CONCAT('%', #{param.fieldName}, '%') - - AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') - AND a.price = #{param.price} @@ -52,21 +53,27 @@ AND a.version = #{param.version} - - AND a.type = #{param.type} + + AND a.is_half = #{param.isHalf} - - AND a.merge_data LIKE CONCAT('%', #{param.mergeData}, '%') + + AND a.time_period LIKE CONCAT('%', #{param.timePeriod}, '%') + + + AND a.date_time LIKE CONCAT('%', #{param.dateTime}, '%') AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') - - AND a.order_time LIKE CONCAT('%', #{param.orderTime}, '%') + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') AND a.time_flag LIKE CONCAT('%', #{param.timeFlag}, '%') + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + AND a.user_id = #{param.userId} @@ -77,9 +84,12 @@ AND a.create_time <= #{param.createTimeEnd} - AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') - ) - + AND (a.merchant_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.order_id = #{param.keywords} + OR a.user_id = #{param.keywords} + OR a.merchant_id = #{param.keywords} + ) + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml index bcf6de6..b1f0fbb 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml @@ -4,9 +4,8 @@ - SELECT a.*,b.merchant_name,b.image as merchantAvatar + SELECT a.* FROM shop_order a - LEFT JOIN shop_merchant b ON a.merchant_id = b.merchant_code AND a.order_id = #{param.orderId} @@ -14,8 +13,8 @@ AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') - - AND a.wechat_order LIKE CONCAT('%', #{param.wechatOrder}, '%') + + AND a.transaction_id LIKE CONCAT('%', #{param.transactionId}, '%') AND a.refund_order LIKE CONCAT('%', #{param.refundOrder}, '%') @@ -23,26 +22,23 @@ AND a.merchant_id = #{param.merchantId} - - AND a.user_id = #{param.userId} - AND a.coupon_id = #{param.couponId} - AND a.card_id = #{param.cardId} - - - AND a.aid = #{param.aid} + AND a.card_id LIKE CONCAT('%', #{param.cardId}, '%') AND a.admin_id = #{param.adminId} - - AND a.code LIKE CONCAT('%', #{param.code}, '%') + + AND a.confirm_id = #{param.confirmId} - - AND a.name LIKE CONCAT('%', #{param.name}, '%') + + AND a.ic_card LIKE CONCAT('%', #{param.icCard}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') AND a.phone LIKE CONCAT('%', #{param.phone}, '%') @@ -80,15 +76,15 @@ AND a.order_status = #{param.orderStatus} - - AND a.type = #{param.type} + + AND a.coupon_type = #{param.couponType} + + + AND a.coupon_desc LIKE CONCAT('%', #{param.couponDesc}, '%') AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') - - AND a.desc LIKE CONCAT('%', #{param.desc}, '%') - AND a.return_num = #{param.returnNum} @@ -101,41 +97,53 @@ AND a.is_invoice = #{param.isInvoice} - - AND a.create_time >= #{param.createTimeStart} - - - AND a.create_time <= #{param.createTimeEnd} - - AND a.pay_time = #{param.payTime} + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') - AND a.refund_time = #{param.refundTime} + AND a.refund_time LIKE CONCAT('%', #{param.refundTime}, '%') - AND a.refund_apply_time = #{param.refundApplyTime} + AND a.refund_apply_time LIKE CONCAT('%', #{param.refundApplyTime}, '%') AND a.check_bill = #{param.checkBill} + + AND a.is_settled = #{param.isSettled} + + + AND a.version = #{param.version} + + + AND a.user_id = #{param.userId} + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + AND a.sort_number = #{param.sortNumber} + AND a.deleted = #{param.deleted} AND a.deleted = 0 + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + - AND (a.comments LIKE CONCAT('%', #{param.keywords}, '%') - OR a.order_id = #{param.keywords} - OR a.order_no = #{param.keywords} - OR a.phone = #{param.keywords} - OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + AND (a.order_no LIKE CONCAT('%', #{param.keywords}, '%') + OR a.order_id = #{param.keywords} + OR a.phone = #{param.keywords} + OR a.user_id = #{param.keywords} + OR a.merchant_id = #{param.keywords} ) - + @@ -156,7 +164,7 @@ diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderInfoLogParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderInfoLogParam.java index 112b8d3..31e8d8d 100644 --- a/src/main/java/com/gxwebsoft/shop/param/OrderInfoLogParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/OrderInfoLogParam.java @@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode; * 订单核销查询参数 * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) @@ -28,15 +28,15 @@ public class OrderInfoLogParam extends BaseParam { @ApiModelProperty(value = "关联订单表id") @QueryField(type = QueryType.EQ) - private Integer oid; + private Integer orderId; - @ApiModelProperty(value = "关联场馆id") + @ApiModelProperty(value = "关联商户ID") @QueryField(type = QueryType.EQ) - private Integer sid; + private Integer merchantId; @ApiModelProperty(value = "关联场地id") @QueryField(type = QueryType.EQ) - private Integer fid; + private Integer fieldId; @ApiModelProperty(value = "核销数量") @QueryField(type = QueryType.EQ) diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderInfoParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderInfoParam.java index 82a7ec2..c2e3a48 100644 --- a/src/main/java/com/gxwebsoft/shop/param/OrderInfoParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/OrderInfoParam.java @@ -11,42 +11,43 @@ import lombok.Data; import lombok.EqualsAndHashCode; /** - * 查询参数 + * 场地查询参数 * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) @JsonInclude(JsonInclude.Include.NON_NULL) -@ApiModel(value = "OrderInfoParam对象", description = "查询参数") +@ApiModel(value = "OrderInfoParam对象", description = "场地查询参数") public class OrderInfoParam extends BaseParam { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "自增ID") @QueryField(type = QueryType.EQ) private Integer id; @ApiModelProperty(value = "关联订单表id") @QueryField(type = QueryType.EQ) - private Integer oid; + private Integer orderId; - @ApiModelProperty(value = "关联场馆id") + @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") + private String orderCode; + + @ApiModelProperty(value = "关联商户ID") @QueryField(type = QueryType.EQ) - private Integer sid; + private Integer merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; @ApiModelProperty(value = "关联场地id") @QueryField(type = QueryType.EQ) - private Integer fid; + private Integer fieldId; - @ApiModelProperty(value = "场馆") - private String siteName; - - @ApiModelProperty(value = "场地") + @ApiModelProperty(value = "场地名称") private String fieldName; - @ApiModelProperty(value = "预约时间段") - private String dateTime; - @ApiModelProperty(value = "单价") @QueryField(type = QueryType.EQ) private BigDecimal price; @@ -63,38 +64,44 @@ public class OrderInfoParam extends BaseParam { @QueryField(type = QueryType.EQ) private Integer childrenNum; - @ApiModelProperty(value = "1已付款,2未付款,3无需付款或占用状态") + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") @QueryField(type = QueryType.EQ) private Integer payStatus; - @ApiModelProperty(value = "是否免费:1免费、2收费") + @ApiModelProperty(value = "是否免费:0收费、1免费") @QueryField(type = QueryType.EQ) - private Integer isFree; + private Boolean isFree; - @ApiModelProperty(value = "是否支持儿童票:1支持,2不支持") + @ApiModelProperty(value = "是否支持儿童票:0不支持、1支持") @QueryField(type = QueryType.EQ) - private Integer isChildren; + private Boolean isChildren; - @ApiModelProperty(value = "系统版本号 10新版 0旧版") + @ApiModelProperty(value = "系统版本 0当前版本 其他版本") @QueryField(type = QueryType.EQ) private Integer version; - @ApiModelProperty(value = "预订类型:1全场,2半场") + @ApiModelProperty(value = "预订类型:0全场,1半场") @QueryField(type = QueryType.EQ) - private Integer type; + private Boolean isHalf; - @ApiModelProperty(value = "组合数据:日期+时间段+场馆id+场地id") - private String mergeData; + @ApiModelProperty(value = "预约时间段") + private String timePeriod; + + @ApiModelProperty(value = "预定日期") + private String dateTime; @ApiModelProperty(value = "开场时间") private String startTime; - @ApiModelProperty(value = "下单时间") - private String orderTime; + @ApiModelProperty(value = "结束时间") + private String endTime; @ApiModelProperty(value = "毫秒时间戳") private Long timeFlag; + @ApiModelProperty(value = "备注") + private String comments; + @ApiModelProperty(value = "用户id") @QueryField(type = QueryType.EQ) private Integer userId; diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java index c21a911..340320b 100644 --- a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java @@ -11,15 +11,15 @@ import lombok.Data; import lombok.EqualsAndHashCode; /** - * 预约订单查询参数 + * 订单查询参数 * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ @Data @EqualsAndHashCode(callSuper = false) @JsonInclude(JsonInclude.Include.NON_NULL) -@ApiModel(value = "OrderParam对象", description = "预约订单查询参数") +@ApiModel(value = "OrderParam对象", description = "订单查询参数") public class OrderParam extends BaseParam { private static final long serialVersionUID = 1L; @@ -28,43 +28,39 @@ public class OrderParam extends BaseParam { private Integer orderId; @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.EQ) private String orderNo; @ApiModelProperty(value = "微信支付订单号") - private String wechatOrder; + private String transactionId; @ApiModelProperty(value = "微信退款订单号") private String refundOrder; - @ApiModelProperty(value = "场馆id用于权限判断") + @ApiModelProperty(value = "商户ID") @QueryField(type = QueryType.EQ) private Integer merchantId; - @ApiModelProperty(value = "用户id") - @QueryField(type = QueryType.EQ) - private Integer userId; - @ApiModelProperty(value = "使用的优惠券id") @QueryField(type = QueryType.EQ) private Integer couponId; @ApiModelProperty(value = "使用的会员卡id") - @QueryField(type = QueryType.EQ) - private Integer cardId; + private String cardId; @ApiModelProperty(value = "关联管理员id") @QueryField(type = QueryType.EQ) - private Integer aid; + private Integer adminId; @ApiModelProperty(value = "核销管理员id") @QueryField(type = QueryType.EQ) - private Integer adminId; + private Integer confirmId; @ApiModelProperty(value = "IC卡号") - private String code; + private String icCard; @ApiModelProperty(value = "真实姓名") - private String name; + private String realName; @ApiModelProperty(value = "手机号码") private String phone; @@ -101,28 +97,28 @@ public class OrderParam extends BaseParam { @QueryField(type = QueryType.EQ) private Integer coachId; - @ApiModelProperty(value = "1微信支付,2积分,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡") + @ApiModelProperty(value = "0余额支付, 1微信支付,2积分,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡") @QueryField(type = QueryType.EQ) private Integer payType; - @ApiModelProperty(value = "1已付款,2未付款") + @ApiModelProperty(value = "0未付款,1已付款") @QueryField(type = QueryType.EQ) private Integer payStatus; - @ApiModelProperty(value = "1已完成,2未使用,3已取消,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") + @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") @QueryField(type = QueryType.EQ) private Integer orderStatus; @ApiModelProperty(value = "优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡") @QueryField(type = QueryType.EQ) - private Integer type; + private Integer couponType; + + @ApiModelProperty(value = "优惠说明") + private String couponDesc; @ApiModelProperty(value = "二维码地址,保存订单号,支付成功后才生成") private String qrcode; - @ApiModelProperty(value = "优惠说明") - private String desc; - @ApiModelProperty(value = "vip月卡年卡、ic月卡年卡回退次数") @QueryField(type = QueryType.EQ) private Integer returnNum; @@ -134,29 +130,42 @@ public class OrderParam extends BaseParam { @ApiModelProperty(value = "预约详情开始时间数组") private String startTime; - @ApiModelProperty(value = "是否已开具发票:1已开发票,2未开发票,3不能开具发票") + @ApiModelProperty(value = "是否已开具发票:0未开发票,1已开发票,2不能开具发票") @QueryField(type = QueryType.EQ) - private Integer isInvoice; + private Boolean isInvoice; - @ApiModelProperty(value = "付款时间") - @QueryField(type = QueryType.EQ) - private Integer payTime; + @ApiModelProperty(value = "支付时间") + private String payTime; @ApiModelProperty(value = "退款时间") - @QueryField(type = QueryType.EQ) - private Integer refundTime; + private String refundTime; @ApiModelProperty(value = "申请退款时间") - @QueryField(type = QueryType.EQ) - private Integer refundApplyTime; + private String refundApplyTime; - @ApiModelProperty(value = "对账情况:1=已对账;2=未对账;3=已对账,金额对不上;4=未查询到该订单") + @ApiModelProperty(value = "对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单") @QueryField(type = QueryType.EQ) private Integer checkBill; + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "系统版本号 0当前版本 value=其他版本") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + @ApiModelProperty(value = "备注") private String comments; + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + @ApiModelProperty(value = "是否删除, 0否, 1是") @QueryField(type = QueryType.EQ) private Integer deleted; diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderInfoLogService.java b/src/main/java/com/gxwebsoft/shop/service/OrderInfoLogService.java index edd40ce..816eac5 100644 --- a/src/main/java/com/gxwebsoft/shop/service/OrderInfoLogService.java +++ b/src/main/java/com/gxwebsoft/shop/service/OrderInfoLogService.java @@ -11,7 +11,7 @@ import java.util.List; * 订单核销Service * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ public interface OrderInfoLogService extends IService { diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderInfoService.java b/src/main/java/com/gxwebsoft/shop/service/OrderInfoService.java index 88f13c2..53109f9 100644 --- a/src/main/java/com/gxwebsoft/shop/service/OrderInfoService.java +++ b/src/main/java/com/gxwebsoft/shop/service/OrderInfoService.java @@ -8,10 +8,10 @@ import com.gxwebsoft.shop.param.OrderInfoParam; import java.util.List; /** - * Service + * 场地Service * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ public interface OrderInfoService extends IService { @@ -34,7 +34,7 @@ public interface OrderInfoService extends IService { /** * 根据id查询 * - * @param id + * @param id 自增ID * @return OrderInfo */ OrderInfo getByIdRel(Integer id); diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderService.java b/src/main/java/com/gxwebsoft/shop/service/OrderService.java index 1934226..36d90d6 100644 --- a/src/main/java/com/gxwebsoft/shop/service/OrderService.java +++ b/src/main/java/com/gxwebsoft/shop/service/OrderService.java @@ -9,10 +9,10 @@ import java.util.HashMap; import java.util.List; /** - * 预约订单Service + * 订单Service * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ public interface OrderService extends IService { diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoLogServiceImpl.java index 239b2d6..53d7166 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoLogServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoLogServiceImpl.java @@ -15,7 +15,7 @@ import java.util.List; * 订单核销Service实现 * * @author 科技小王子 - * @since 2024-05-03 11:15:22 + * @since 2024-05-14 13:20:04 */ @Service public class OrderInfoLogServiceImpl extends ServiceImpl implements OrderInfoLogService { diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java index 02675df..8d1b0f7 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java @@ -12,10 +12,10 @@ import org.springframework.stereotype.Service; import java.util.List; /** - * Service实现 + * 场地Service实现 * * @author 科技小王子 - * @since 2024-05-13 19:50:43 + * @since 2024-05-14 13:20:04 */ @Service public class OrderInfoServiceImpl extends ServiceImpl implements OrderInfoService { diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java index 9a4dbe1..354736a 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java @@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gxwebsoft.common.core.config.ConfigProperties; -import com.gxwebsoft.common.core.utils.JSONUtil; import com.gxwebsoft.common.core.utils.RedisUtil; import com.gxwebsoft.common.system.service.SettingService; import com.gxwebsoft.shop.entity.OrderInfo; @@ -37,10 +36,10 @@ import java.util.Set; import java.util.stream.Collectors; /** - * 预约订单Service实现 + * 订单Service实现 * * @author 科技小王子 - * @since 2024-04-25 22:01:33 + * @since 2024-05-14 13:20:04 */ @Service public class OrderServiceImpl extends ServiceImpl implements OrderService { @@ -67,8 +66,8 @@ public class OrderServiceImpl extends ServiceImpl implements final Set orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toSet()); // 查询订单信息表 if (!CollectionUtils.isEmpty(orderIds)) { - final List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().in(OrderInfo::getOid, orderIds)); - final Map> orderInfo = orderInfoList.stream().collect(Collectors.groupingBy(OrderInfo::getOid)); + final List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().in(OrderInfo::getOrderId, orderIds)); + final Map> orderInfo = orderInfoList.stream().collect(Collectors.groupingBy(OrderInfo::getOrderId)); list.forEach(d -> { if (!orderInfo.isEmpty()) { final List orderInfos = orderInfo.get(d.getOrderId()); @@ -81,21 +80,21 @@ public class OrderServiceImpl extends ServiceImpl implements return new PageResult<>(list, page.getTotal()); } - @Override - public List listRel(OrderParam param) { - List list = baseMapper.selectListRel(param); - // 排序 - PageParam page = new PageParam<>(); - page.setDefaultOrder("sort_number asc, create_time desc"); - return page.sortRecords(list); - } + @Override + public List listRel(OrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } - @Override - public Order getByIdRel(Integer orderId) { - OrderParam param = new OrderParam(); - param.setOrderId(orderId); - return param.getOne(baseMapper.selectListRel(param)); - } + @Override + public Order getByIdRel(Integer orderId) { + OrderParam param = new OrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } /** * 创建微信支付 @@ -172,9 +171,10 @@ public class OrderServiceImpl extends ServiceImpl implements @Override public Order getByOutTradeNo(String outTradeNo) { - System.out.println("outTradeNo = " + outTradeNo); OrderParam param = new OrderParam(); param.setOrderNo(outTradeNo); + System.out.println("param222 = " + param); + baseMapper.getByOutTradeNo(param); return param.getOne(baseMapper.getByOutTradeNo(param)); } diff --git a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java index cd6b819..f66bd0d 100644 --- a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java @@ -62,14 +62,14 @@ public class ShopGenerator { // "shop_merchant", // "shop_merchant_type", // "shop_merchant_apply", -// "shop_order" // "shop_merchant_account", // "shop_chat_message", // "shop_chat_conversation" // "shop_user_collection", // "shop_mp_menu" - "shop_order_info", -// "shop_order_info_log", + "shop_order", + "shop_order_info", + "shop_order_info_log", // "shop_wechat_deposit" // "shop_users" };