From 7a975fa91de2cc86c76ff1cd4cbf903f7e6c2dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Thu, 11 Jul 2024 02:12:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2MPJLambdaWrapper...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../booking/controller/FieldController.java | 8 +- .../booking/controller/PeriodController.java | 11 +- .../controller/UserInvoiceController.java | 1 - .../gxwebsoft/booking/param/PeriodParam.java | 6 + .../shop/controller/OrderController.java | 15 ++ .../shop/controller/UsersController.java | 222 ++++++++++-------- .../controller/WxPayNotifyController.java | 3 +- .../com/gxwebsoft/shop/entity/OrderInfo.java | 7 +- .../shop/mapper/xml/OrderInfoMapper.xml | 2 +- .../service/impl/OrderInfoServiceImpl.java | 20 +- .../shop/service/impl/OrderServiceImpl.java | 3 + .../gxwebsoft/shop/task/OrderInfoTask.java | 46 +++- .../com/gxwebsoft/shop/task/OrderTask.java | 12 +- 13 files changed, 232 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/gxwebsoft/booking/controller/FieldController.java b/src/main/java/com/gxwebsoft/booking/controller/FieldController.java index 4facf6b..410e0d8 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/FieldController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/FieldController.java @@ -1,6 +1,7 @@ package com.gxwebsoft.booking.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.booking.service.FieldService; import com.gxwebsoft.booking.entity.Field; @@ -146,12 +147,15 @@ public class FieldController extends BaseController { final Set collect = loginUser.getRoles().stream().map(Role::getRoleCode).collect(Collectors.toSet()); collect.forEach(d -> { if(d.equals("merchant") || d.equals("merchantClerk")){ - orderInfoService.updateBatchById(order.getOrderInfo()); order.setOrderStatus(1); orderService.updateById(order); + order.getOrderInfo().forEach(v -> { + v.setOrderStatus(1); // 已核销 + v.setAdultNumUse(v.getAdultNumUse() + 1); // 核销票数 + orderInfoService.update(new LambdaUpdateWrapper().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getOrderStatus,1)); + }); } }); return success("核销成功"); } - } diff --git a/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java b/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java index b71c3b7..cc0a040 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/PeriodController.java @@ -93,13 +93,15 @@ public class PeriodController extends BaseController { // 今日订单信息 按Key分组(组合规则:日期+时间段+场馆id+场地id) Map> collectKey; - List orderInfoList = orderInfoService.getTodayOrder(param); +// System.out.println("param = " + param); + List orderInfoList = orderInfoService.getTodayOrder(param); +// System.out.println("orderInfoList = " + orderInfoList.size()); // List orderInfoList = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getDateTime, param.getDateTime()).eq(OrderInfo::getMerchantId,param.getMerchantId()).gt(OrderInfo::getExpirationTime, LocalDateTime.now())); collectKey = orderInfoList.stream().collect(Collectors.groupingBy(OrderInfo::getOrderCode)); - +// System.out.println("collectKey = " + collectKey); // 查询是否含有未支付订单 final User loginUser = getLoginUser(); - if(loginUser != null){ + if(loginUser != null && param.getAdmin() == null){ if (orderService.count(new LambdaQueryWrapper().eq(Order::getType,1).eq(Order::getPayStatus,0).eq(Order::getOrderStatus,0).eq(Order::getUserId,loginUser.getUserId())) > 0) { return fail("您还有未支付订单,请先支付",null); } @@ -120,7 +122,6 @@ public class PeriodController extends BaseController { } redisUtil.set(param.getMerchantId().toString(),fields); - list.forEach(d -> { // 查询可预定场地 final String string = redisUtil.get(param.getMerchantId().toString()); @@ -128,11 +129,11 @@ public class PeriodController extends BaseController { 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()))); +// System.out.println("key = " + key); final List orderInfos = collectKey.get(key); if (!CollectionUtils.isEmpty(orderInfos)) { final OrderInfo orderInfo = orderInfos.get(0); if (orderInfo.getOrderCode().equals(key)) { - System.out.println("f.getNum = " + f.getNum()); if(f.getIsRepeat().equals(0)){ f.setSold(true); } diff --git a/src/main/java/com/gxwebsoft/booking/controller/UserInvoiceController.java b/src/main/java/com/gxwebsoft/booking/controller/UserInvoiceController.java index fcd5b00..24c92ca 100644 --- a/src/main/java/com/gxwebsoft/booking/controller/UserInvoiceController.java +++ b/src/main/java/com/gxwebsoft/booking/controller/UserInvoiceController.java @@ -213,7 +213,6 @@ public class UserInvoiceController extends BaseController { return fail("发票开具失败"); } - @ApiOperation("根据id查询发票") @GetMapping("/showInvoice/{orderId}") public ApiResult showInvoice(@PathVariable("orderId") Integer orderId) { diff --git a/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java b/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java index 9b93a6e..5cbc0f4 100644 --- a/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java +++ b/src/main/java/com/gxwebsoft/booking/param/PeriodParam.java @@ -1,6 +1,8 @@ package com.gxwebsoft.booking.param; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; import com.gxwebsoft.common.core.annotation.QueryField; import com.gxwebsoft.common.core.annotation.QueryType; import com.gxwebsoft.common.core.web.BaseParam; @@ -88,4 +90,8 @@ public class PeriodParam extends BaseParam { @QueryField(type = QueryType.EQ) private String merchantCode; + @ApiModelProperty(value = "是否管理端请求") + @QueryField(type = QueryType.EQ) + private Boolean admin; + } diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java index 82e4738..4f5b264 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -16,6 +16,7 @@ import com.gxwebsoft.booking.entity.UserCard; import com.gxwebsoft.booking.param.UserCardParam; import com.gxwebsoft.booking.service.CardService; import com.gxwebsoft.booking.service.UserCardService; +import com.gxwebsoft.common.core.exception.BusinessException; import com.gxwebsoft.common.core.security.JwtUtil; import com.gxwebsoft.common.core.utils.CommonUtil; import com.gxwebsoft.common.core.utils.RequestUtil; @@ -161,6 +162,19 @@ public class OrderController extends BaseController { if (StrUtil.isBlank(order.getComments())) { return fail("商品描述(必填)"); } + // 判断场地是否被抢占 + if (order.getType().equals(1)) { + order.getOrderInfo().forEach(d -> { + if (orderInfoService.count(new LambdaUpdateWrapper() + .eq(OrderInfo::getPayStatus,1) + .eq(OrderInfo::getOrderCode,d.getOrderCode())) > 0) { + order.setScene(1234); + } + }); + if(order.getScene().equals(1234)){ + return fail("场地不存在"); + } + } // 微信支付(商品金额不能为0) // if (order.getPayType().equals(1)) { // if (order.getTotalPrice().compareTo(BigDecimal.ZERO) == 0) { @@ -221,6 +235,7 @@ public class OrderController extends BaseController { d.setUserId(getLoginUser().getUserId()); d.setDateTime(d.getDateTime()); d.setExpirationTime(order.getExpirationTime()); + d.setTenantId(order.getTenantId()); }); orderInfoService.saveBatch(order.getOrderInfo()); } diff --git a/src/main/java/com/gxwebsoft/shop/controller/UsersController.java b/src/main/java/com/gxwebsoft/shop/controller/UsersController.java index df090ef..1f57443 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/UsersController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/UsersController.java @@ -9,11 +9,19 @@ import com.gxwebsoft.shop.param.UsersParam; import com.gxwebsoft.shop.service.UsersService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import okhttp3.FormBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; /** * 用户控制器 @@ -25,114 +33,144 @@ import java.util.List; @RestController @RequestMapping("/api/shop/users") public class UsersController extends BaseController { - @Resource - private UsersService usersService; + @Resource + private UsersService usersService; - @ApiOperation("分页查询用户") - @GetMapping("/page") - public ApiResult> page(UsersParam param) { - // 使用关联查询 - return success(usersService.pageRel(param)); - } + @ApiOperation("分页查询用户") + @GetMapping("/page") + public ApiResult> page(UsersParam param) { + // 使用关联查询 + return success(usersService.pageRel(param)); + } - @PreAuthorize("hasAuthority('shop:users:list')") - @ApiOperation("查询全部用户") - @GetMapping() - public ApiResult> list(UsersParam param) { - // 使用关联查询 - return success(usersService.listRel(param)); - } + @PreAuthorize("hasAuthority('shop:users:list')") + @ApiOperation("查询全部用户") + @GetMapping() + public ApiResult> list(UsersParam param) { + // 使用关联查询 + return success(usersService.listRel(param)); + } - @PreAuthorize("hasAuthority('shop:users:list')") - @ApiOperation("根据id查询用户") - @GetMapping("/{id}") - public ApiResult get(@PathVariable("id") Integer id) { - // 使用关联查询 - return success(usersService.getByIdRel(id)); - } + @PreAuthorize("hasAuthority('shop:users:list')") + @ApiOperation("根据id查询用户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(usersService.getByIdRel(id)); + } - @PreAuthorize("hasAuthority('shop:users:list')") - @ApiOperation("根据手机查询用户") - @GetMapping("/getByPhone") - public ApiResult getByPhone(UsersParam param) { - Users result; - final List users = usersService.listRel(param); - if (users.isEmpty()) { - // 同步注册用户 - final Users addUsers = new Users(); - addUsers.setPhone(param.getPhone()); - addUsers.setUsername("微信用户"); - addUsers.setOpenid(""); - addUsers.setAvatarUrl(""); - addUsers.setSex(0); - addUsers.setIsAdmin(2); - addUsers.setCountry(""); - addUsers.setProvince(""); - addUsers.setCity(""); - addUsers.setRegion(""); - long longValue = System.currentTimeMillis() / 1000; - addUsers.setAddTime((int) longValue); - addUsers.setSortNumber(0); - usersService.save(addUsers); - result = addUsers; - }else { - result = param.getOne(users); - } - return success(result); + @PreAuthorize("hasAuthority('shop:users:list')") + @ApiOperation("根据手机查询用户") + @GetMapping("/getByPhone") + public ApiResult getByPhone(UsersParam param) { + Users result; + final List users = usersService.listRel(param); + if (users.isEmpty()) { + // 同步注册用户 + final Users addUsers = new Users(); + addUsers.setPhone(param.getPhone()); + addUsers.setUsername("微信用户"); + addUsers.setOpenid(""); + addUsers.setAvatarUrl(""); + addUsers.setSex(0); + addUsers.setIsAdmin(2); + addUsers.setCountry(""); + addUsers.setProvince(""); + addUsers.setCity(""); + addUsers.setRegion(""); + long longValue = System.currentTimeMillis() / 1000; + addUsers.setAddTime((int) longValue); + addUsers.setSortNumber(0); + usersService.save(addUsers); + result = addUsers; + } else { + result = param.getOne(users); } + return success(result); + } - @ApiOperation("添加用户") - @PostMapping() - public ApiResult save(@RequestBody Users users) { - if (usersService.save(users)) { - return success("添加成功"); - } - return fail("添加失败"); + @ApiOperation("添加用户") + @PostMapping() + public ApiResult save(@RequestBody Users users) { + if (usersService.save(users)) { + return success("添加成功"); } + return fail("添加失败"); + } - @ApiOperation("修改用户") - @PutMapping() - public ApiResult update(@RequestBody Users users) { - if (usersService.updateById(users)) { - return success("修改成功"); - } - return fail("修改失败"); + @ApiOperation("修改用户") + @PutMapping() + public ApiResult update(@RequestBody Users users) { + if (usersService.updateById(users)) { + return success("修改成功"); } + return fail("修改失败"); + } - @ApiOperation("删除用户") - @DeleteMapping("/{id}") - public ApiResult remove(@PathVariable("id") Integer id) { - if (usersService.removeById(id)) { - return success("删除成功"); - } - return fail("删除失败"); + @ApiOperation("删除用户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (usersService.removeById(id)) { + return success("删除成功"); } + return fail("删除失败"); + } - @ApiOperation("批量添加用户") - @PostMapping("/batch") - public ApiResult saveBatch(@RequestBody List list) { - if (usersService.saveBatch(list)) { - return success("添加成功"); - } - return fail("添加失败"); + @ApiOperation("批量添加用户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (usersService.saveBatch(list)) { + return success("添加成功"); } + return fail("添加失败"); + } - @ApiOperation("批量修改用户") - @PutMapping("/batch") - public ApiResult removeBatch(@RequestBody BatchParam batchParam) { - if (batchParam.update(usersService, "user_id")) { - return success("修改成功"); - } - return fail("修改失败"); + @ApiOperation("批量修改用户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(usersService, "user_id")) { + return success("修改成功"); } + return fail("修改失败"); + } - @ApiOperation("批量删除用户") - @DeleteMapping("/batch") - public ApiResult removeBatch(@RequestBody List ids) { - if (usersService.removeByIds(ids)) { - return success("删除成功"); - } - return fail("删除失败"); + @ApiOperation("批量删除用户") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (usersService.removeByIds(ids)) { + return success("删除成功"); } + return fail("删除失败"); + } + @ApiOperation("上传身份证") + @GetMapping("/idCardOcr") + public ApiResult idCardOcr() throws IOException { + String url = "https://idcardocrc.shumaidata.com/getidcardocrc"; + String appCode = "1e74aff57b2542359290e877975b8377"; + + Map params = new HashMap<>(); + //image 和 url 二选一 ,选择其中一个时,请注释另外一个参数,默认使用image + //params.put("url", "http://.../image.jpg"); + params.put("url", "https://oss.wsdns.cn/20240710/56cef2c4269d4ec7967eedbac6765254.jpeg"); + String result = postForm(appCode, url, params); + System.out.println(result); + return success(result); + } + + public static String postForm(String appCode, String url, Map params) throws IOException { + OkHttpClient client = new OkHttpClient.Builder().build(); + FormBody.Builder formbuilder = new FormBody.Builder(); + Iterator it = params.keySet().iterator(); + while (it.hasNext()) { + String key = it.next(); + formbuilder.add(key, params.get(key)); + } + FormBody body = formbuilder.build(); + Request request = new Request.Builder().url(url).addHeader("Authorization", "APPCODE " + appCode).post(body).build(); + Response response = client.newCall(request).execute(); + System.out.println("返回状态码" + response.code() + ",message:" + response.message()); + String result = response.body().string(); + return result; + } } diff --git a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java index 25459d8..0e779af 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/WxPayNotifyController.java @@ -131,7 +131,8 @@ public class WxPayNotifyController extends BaseController { System.out.println("实际付款金额 = " + order.getPayPrice()); orderService.updateByOutTradeNo(order); // 6. TODO 同步更新订单明细的支付状态 - orderInfoService.updateByOutTradeNo(order); + orderInfoService.update(new LambdaUpdateWrapper().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1)); +// orderInfoService.updateByOutTradeNo(order); // 7.同步会员卡状态 if(order.getType().equals(2)){ final UserCard userCard = userCardService.getById(order.getCardId()); diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java b/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java index eb37932..5df5071 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderInfo.java @@ -68,11 +68,16 @@ public class OrderInfo implements Serializable { @ApiModelProperty(value = "儿童人数") private Integer childrenNum; + @ApiModelProperty(value = "已核销的成人票数") + private Integer adultNumUse; + + @ApiModelProperty(value = "已核销的儿童票数") + private Integer childrenNumUse; + @ApiModelProperty(value = "0 未付款 1已付款,2无需付款或占用状态") private Integer payStatus; @ApiModelProperty(value = "0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款") - @TableField(exist = false) private Integer orderStatus; @ApiModelProperty(value = "是否免费:0收费、1免费") 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 a9eea17..b634f03 100644 --- a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderInfoMapper.xml @@ -105,7 +105,7 @@ 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 5468fd4..2de651a 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderInfoServiceImpl.java @@ -1,21 +1,17 @@ package com.gxwebsoft.shop.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.github.yulichang.toolkit.JoinWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.gxwebsoft.booking.param.PeriodParam; -import com.gxwebsoft.common.system.entity.User; -import com.gxwebsoft.shop.entity.ChatConversation; -import com.gxwebsoft.shop.entity.Order; -import com.gxwebsoft.shop.mapper.OrderInfoMapper; -import com.gxwebsoft.shop.service.OrderInfoService; -import com.gxwebsoft.shop.entity.OrderInfo; -import com.gxwebsoft.shop.param.OrderInfoParam; import com.gxwebsoft.common.core.web.PageParam; import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderInfo; +import com.gxwebsoft.shop.mapper.OrderInfoMapper; +import com.gxwebsoft.shop.param.OrderInfoParam; +import com.gxwebsoft.shop.service.OrderInfoService; import org.springframework.stereotype.Service; -import java.time.LocalDateTime; import java.util.List; /** @@ -65,9 +61,9 @@ public class OrderInfoServiceImpl extends ServiceImpl implements order.setPayTime(DateUtil.date()); order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); orderService.updateById(order); + orderInfoService.update(new LambdaUpdateWrapper().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1)); // 更新会员卡状态 if(order.getType().equals(2)){ final UserCard userCard = userCardService.getById(order.getCardId()); @@ -375,6 +377,7 @@ public class OrderServiceImpl extends ServiceImpl implements order.setPayTime(DateUtil.date()); order.setExpirationTime(DateUtil.offset(DateUtil.date(), DateField.YEAR, 10)); orderService.updateById(order); + orderInfoService.update(new LambdaUpdateWrapper().eq(OrderInfo::getOrderId,order.getOrderId()).set(OrderInfo::getPayStatus,1)); return true; } // diff --git a/src/main/java/com/gxwebsoft/shop/task/OrderInfoTask.java b/src/main/java/com/gxwebsoft/shop/task/OrderInfoTask.java index 5cee700..d42c12e 100644 --- a/src/main/java/com/gxwebsoft/shop/task/OrderInfoTask.java +++ b/src/main/java/com/gxwebsoft/shop/task/OrderInfoTask.java @@ -2,17 +2,15 @@ package com.gxwebsoft.shop.task; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.gxwebsoft.cms.entity.ServerTimeVO; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.shop.entity.Order; import com.gxwebsoft.shop.entity.OrderInfo; -import com.gxwebsoft.shop.mapper.OrderMapper; -import com.gxwebsoft.shop.param.OrderParam; import com.gxwebsoft.shop.service.OrderInfoService; +import com.gxwebsoft.shop.service.OrderService; import io.swagger.annotations.Api; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -29,15 +27,49 @@ import java.util.List; @RestController @RequestMapping("/api/shop/order-info") public class OrderInfoTask extends BaseController { + @Resource + private OrderService orderService; @Resource private OrderInfoService orderInfoService; /** * 自动处理过期订单任务 */ -// @Scheduled(cron="*/10 * * * * *") -// @Transactional(rollbackFor = {Exception.class}) + @Scheduled(cron="*/10 * * * * *") + @Transactional(rollbackFor = {Exception.class}) public void settledExpirationOrder() { -// final List list = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getOrderStatus, 0)); + final Order order = new Order(); + final int hour = DateUtil.hour(DateUtil.date(), true); + final int minute = DateUtil.minute(DateUtil.date()); + final int second = DateUtil.second(DateUtil.date()); + final String startTime = String.format("%02d", hour).concat(":").concat(String.format("%02d", minute)).concat(":").concat(String.format("%02d", second)); + final List list = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getOrderStatus, 0).ne(OrderInfo::getMerchantId,3028).eq(OrderInfo::getDateTime,DateUtil.today()).lt(OrderInfo::getStartTime,startTime)); + list.forEach(d -> { + d.setOrderStatus(1); + order.setOrderId(d.getOrderId()); + }); + orderInfoService.updateBatchById(list); + order.setOrderStatus(1); + orderService.updateById(order); + System.out.println("自动核销订单 = " + list.size()); + } + /** + * 自动处理过期订单任务(游泳馆专用) + * Scheduled(cron="0 30 21 * * ?") + */ + @Scheduled(cron="*/30 * * * * *") + @Transactional(rollbackFor = {Exception.class}) + public void settledExpirationOrderBy3028() { + final Order order = new Order(); + final List list = orderInfoService.list(new LambdaQueryWrapper().eq(OrderInfo::getOrderStatus, 0).eq(OrderInfo::getMerchantId,3028).eq(OrderInfo::getDateTime,DateUtil.today()).lt(OrderInfo::getStartTime,"21:30:00")); + list.forEach(d -> { + d.setOrderStatus(1); + order.setOrderId(d.getOrderId()); + }); + orderInfoService.updateBatchById(list); + if(!CollectionUtils.isEmpty(list)){ + orderService.updateById(order); + } + System.out.println("自动核销订单(游泳馆) = " + list.size()); } } diff --git a/src/main/java/com/gxwebsoft/shop/task/OrderTask.java b/src/main/java/com/gxwebsoft/shop/task/OrderTask.java index 69a9e57..29b758a 100644 --- a/src/main/java/com/gxwebsoft/shop/task/OrderTask.java +++ b/src/main/java/com/gxwebsoft/shop/task/OrderTask.java @@ -5,6 +5,7 @@ import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.shop.entity.Order; import com.gxwebsoft.shop.mapper.OrderMapper; import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderService; import io.swagger.annotations.Api; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.transaction.annotation.Transactional; @@ -24,6 +25,8 @@ import java.util.List; @RestController @RequestMapping("/api/shop/order") public class OrderTask extends BaseController { + @Resource + private OrderService orderService; @Resource private OrderMapper orderMapper; /** @@ -37,8 +40,13 @@ public class OrderTask extends BaseController { p.setExpirationTime(DateUtil.date()); final List list = orderMapper.selectExpirationOrder(p); list.forEach(d -> { - System.out.println("任务1:处理未支付订单超时自动关闭 = " + d); - orderMapper.updateExpirationOrder(d.getOrderId()); + d.setOrderStatus(2); }); + orderService.updateBatchById(list); + System.out.println("自动处理过期订单 = " + list.size()); +// list.forEach(d -> { +// System.out.println("任务1:处理未支付订单超时自动关闭 = " + d); +// orderMapper.updateExpirationOrder(d.getOrderId()); +// }); } }