diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/PlatformOrderController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/PlatformOrderController.java index af1605c41..48624b983 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/PlatformOrderController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/controller/admin/PlatformOrderController.java @@ -1,18 +1,31 @@ package org.jeecg.modules.business.controller.admin; -import java.io.UnsupportedEncodingException; import java.io.IOException; -import java.net.URLDecoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import javax.mail.Authenticator; +import javax.mail.MessagingException; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import freemarker.template.Template; +import freemarker.template.TemplateException; import org.jeecg.modules.business.domain.api.mabang.getorderlist.OrderStatus; +import org.jeecg.modules.business.domain.job.ThrottlingExecutorService; +import org.jeecg.modules.business.entity.Client; import org.jeecg.modules.business.mapper.PlatformOrderMapper; -import org.jeecg.modules.business.vo.PlatformOrderQuantity; +import org.jeecg.modules.business.service.*; +import org.jeecg.modules.business.vo.*; +import org.jeecg.modules.system.service.ISysDepartService; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; @@ -25,11 +38,10 @@ import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.common.util.oConvertUtils; import org.jeecg.modules.business.entity.PlatformOrderContent; import org.jeecg.modules.business.entity.PlatformOrder; -import org.jeecg.modules.business.vo.PlatformOrderPage; -import org.jeecg.modules.business.service.IPlatformOrderService; -import org.jeecg.modules.business.service.IPlatformOrderContentService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.multipart.MultipartFile; @@ -38,10 +50,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; -import com.alibaba.fastjson.JSON; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.aspect.annotation.AutoLog; +import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; + +import static org.jeecg.modules.business.vo.PlatformOrderOperation.Action.CANCEL; +import static org.jeecg.modules.business.vo.PlatformOrderOperation.Action.SUSPEND; /** * @Description: 平台订单表 @@ -54,15 +69,28 @@ import org.jeecg.common.aspect.annotation.AutoLog; @RequestMapping("/business/platformOrder") @Slf4j public class PlatformOrderController { - private final IPlatformOrderService platformOrderService; - + @Autowired + private IClientService clientService; + @Autowired + private EmailService emailService; + @Autowired + private IPlatformOrderService platformOrderService; @Autowired private PlatformOrderMapper platformOrderMapper; @Autowired - public PlatformOrderController(IPlatformOrderService platformOrderService) { - this.platformOrderService = platformOrderService; - } + private IPlatformOrderMabangService platformOrderMabangService; + @Autowired + private IShopService shopService; + @Autowired + private ISysDepartService sysDepartService; + @Autowired + private Environment env; + @Autowired + private FreeMarkerConfigurer freemarkerConfigurer; + + private static final Integer DEFAULT_NUMBER_OF_THREADS = 2; + private static final Integer MABANG_API_RATE_LIMIT_PER_MINUTE = 10; /** * Fetchs all orders with erp_status = 1, no logicistic channel and product available @@ -343,4 +371,121 @@ public class PlatformOrderController { List res = platformOrderService.monthOrderNumber(); return Result.OK(res); } + + /** + * Get all orders by shop with erp status 1, 2 and 3 + * @return + */ + @GetMapping("/ordersByShop") + public Result> ordersByShop(@RequestParam("shopID") String shopID) { + List res = platformOrderService.ordersByShop(shopID); + return Result.OK(res); + } + + @PostMapping("/orderManagement") + public Result orderManagement(@RequestBody List orderOperations) throws IOException { + String companyOrgCode = sysDepartService.queryCodeByDepartName(env.getProperty("company.orgName")); + LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + Client client; + if(!sysUser.getOrgCode().equals(companyOrgCode)) { + client = clientService.getCurrentClient(); + if (client == null) { + return Result.error(500,"Client not found. Please contact administrator."); + } + String shopId = orderOperations.get(0).getShopId(); + List shopIds = shopService.listIdByClient(client.getId()); + if(!shopIds.contains(shopId)) { + return Result.error(500,"You are not allowed to perform this operation."); + } + } else { + client = clientService.getByShopId(orderOperations.get(0).getShopId()); + } + + long suspendCount = 0, cancelCount = 0; + List ordersToSuspend = orderOperations.stream() + .filter(orderOperation -> orderOperation.getAction().equalsIgnoreCase(SUSPEND.getValue())) + .collect(Collectors.toList()); + List ordersToCancel = orderOperations.stream() + .filter(orderOperation -> orderOperation.getAction().equalsIgnoreCase(CANCEL.getValue())) + .collect(Collectors.toList()); + for(PlatformOrderOperation orderOperation : ordersToSuspend) { + suspendCount += orderOperation.getOrderIds().split(",").length; + } + for(PlatformOrderOperation orderOperation : ordersToCancel) { + cancelCount += orderOperation.getOrderIds().split(",").length; + } + log.info("{} Orders to suspend: {}", suspendCount, ordersToSuspend); + log.info("{} Orders to cancel: {}", cancelCount, ordersToCancel); + + Responses cancelResponses = new Responses(); + Responses suspendResponses = new Responses(); + // Cancel orders + ExecutorService cancelExecutorService = ThrottlingExecutorService.createExecutorService(DEFAULT_NUMBER_OF_THREADS, + MABANG_API_RATE_LIMIT_PER_MINUTE, TimeUnit.MINUTES); + List> futuresCancel = ordersToCancel.stream() + .map(orderOperation -> CompletableFuture.supplyAsync( + () -> platformOrderMabangService.cancelOrders(orderOperation), + cancelExecutorService) + ).collect(Collectors.toList()); + ListcancelResults = futuresCancel.stream().map(CompletableFuture::join).collect(Collectors.toList()); + cancelResults.forEach(res -> { + cancelResponses.getSuccesses().addAll(res.getSuccesses()); + cancelResponses.getFailures().addAll(res.getFailures()); + }); + log.info("{}/{} orders cancelled successfully.", cancelResponses.getSuccesses().size(), cancelCount); + log.info("Failed to cancel orders: {}", cancelResponses.getFailures()); + + + // Suspend orders + ExecutorService suspendExecutorService = ThrottlingExecutorService.createExecutorService(DEFAULT_NUMBER_OF_THREADS, + MABANG_API_RATE_LIMIT_PER_MINUTE, TimeUnit.MINUTES); + List> futuresSuspend = ordersToSuspend.stream() + .map(orderOperation -> CompletableFuture.supplyAsync( + () -> platformOrderMabangService.suspendOrder(orderOperation), + suspendExecutorService) + ).collect(Collectors.toList()); + List suspendResults = futuresSuspend.stream().map(CompletableFuture::join).collect(Collectors.toList()); + suspendResults.forEach(res -> { + suspendResponses.getSuccesses().addAll(res.getSuccesses()); + suspendResponses.getFailures().addAll(res.getFailures()); + }); + log.info("{}/{} orders suspended successfully.", suspendResponses.getSuccesses().size(), suspendCount); + + JSONObject result = new JSONObject(); + result.put("cancelResult", cancelResponses); + result.put("suspendResult", suspendResponses); + + // send mail + String subject = "[" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "] Orders management report"; + String destEmail = sysUser.getEmail(); + Properties prop = emailService.getMailSender(); + Map templateModel = new HashMap<>(); + templateModel.put("firstname", client.getFirstName()); + templateModel.put("lastname", client.getSurname()); + if(cancelCount > 0) + templateModel.put("cancelSuccessCount", cancelResponses.getSuccesses().size() + "/" + cancelCount); + if(suspendCount > 0) + templateModel.put("suspendSuccessCount", suspendResponses.getSuccesses().size() + "/" + suspendCount); + templateModel.put("cancelFailures", cancelResponses.getFailures()); + templateModel.put("suspendFailures", suspendResponses.getFailures()); + + Session session = Session.getInstance(prop, new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(env.getProperty("spring.mail.username"), env.getProperty("spring.mail.password")); + } + }); + try { + freemarkerConfigurer = emailService.freemarkerClassLoaderConfig(); + Template freemarkerTemplate = freemarkerConfigurer.getConfiguration() + .getTemplate("client/orderManagementNotification.ftl"); + String htmlBody = FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerTemplate, templateModel); + emailService.sendSimpleMessage(destEmail, subject, htmlBody, session); + log.info("Mail sent successfully !"); + } catch (TemplateException | MessagingException e) { + throw new RuntimeException(e); + } + + return Result.OK(result); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ChangeOrderRequestBody.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ChangeOrderRequestBody.java index 8e6bc389a..86a79e8f3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ChangeOrderRequestBody.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/dochangeorder/ChangeOrderRequestBody.java @@ -2,6 +2,8 @@ package org.jeecg.modules.business.domain.api.mabang.dochangeorder; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import org.apache.commons.lang3.tuple.Pair; import org.jeecg.modules.business.domain.api.mabang.RequestBody; @@ -10,7 +12,11 @@ import java.util.function.Function; public class ChangeOrderRequestBody implements RequestBody { + @Setter + @Getter private String platformOrderId; + private String orderStatus; + private String remark; private final HashSet> oldSkuData; @@ -29,11 +35,13 @@ public class ChangeOrderRequestBody implements RequestBody { } } - public ChangeOrderRequestBody(String platformOrderId, HashSet> oldSkuData, - HashSet> newSkuData) { + public ChangeOrderRequestBody(String platformOrderId, String orderStatus, HashSet> oldSkuData, + HashSet> newSkuData, String remark) { this.platformOrderId = platformOrderId; this.oldSkuData = oldSkuData; this.newSkuData = newSkuData; + this.orderStatus = orderStatus; + this.remark = remark; } @Override @@ -45,8 +53,10 @@ public class ChangeOrderRequestBody implements RequestBody { public JSONObject parameters() { JSONObject json = new JSONObject(); putNonNull(json, "platformOrderId", platformOrderId); + putNonNull(json, "orderStatus", orderStatus); + putNonNull(json, "remark", remark); JSONArray stockDataArray = new JSONArray(); - if (!oldSkuData.isEmpty()) { + if (oldSkuData != null && !oldSkuData.isEmpty()) { for (Pair oldSkuDatum : oldSkuData) { JSONObject stockData = new JSONObject(); stockData.put("warehouseName", DEFAULT_WAREHOUSE_NAME); @@ -57,26 +67,20 @@ public class ChangeOrderRequestBody implements RequestBody { } } - for (Pair newSkuDatum : newSkuData) { - JSONObject stockData = new JSONObject(); - stockData.put("warehouseName", DEFAULT_WAREHOUSE_NAME); - stockData.put("stockSku", newSkuDatum.getKey()); - stockData.put("quantity", newSkuDatum.getValue()); - stockData.put("type", OperationType.ADD.code); - stockDataArray.add(stockData); + if(newSkuData != null) { + for (Pair newSkuDatum : newSkuData) { + JSONObject stockData = new JSONObject(); + stockData.put("warehouseName", DEFAULT_WAREHOUSE_NAME); + stockData.put("stockSku", newSkuDatum.getKey()); + stockData.put("quantity", newSkuDatum.getValue()); + stockData.put("type", OperationType.ADD.code); + stockDataArray.add(stockData); + } } - json.put("stockData", stockDataArray.toJSONString()); + putNonNull(json,"stockData", stockDataArray.toJSONString()); return json; } - public String getPlatformOrderId() { - return platformOrderId; - } - - public void setPlatformOrderId(String platformOrderId) { - this.platformOrderId = platformOrderId; - } - private void putNonNull(JSONObject json, String key, E value) { if (value != null) { json.put(key, value); diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequest.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequest.java new file mode 100644 index 000000000..45fffe93f --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequest.java @@ -0,0 +1,30 @@ +package org.jeecg.modules.business.domain.api.mabang.orderDoOrderAbnormal; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.domain.api.mabang.Request; +import org.springframework.http.ResponseEntity; + +/** + * This class contains some key information and necessary procedures + * to send a request to mabang "order-do-order-abnormal" API, for example: target URL, + * correspondent HTTP method, procedure to generate authorization. + *

+ * One can use static method {@code sendRequest} to send request with body, + * and then get respective response. Or use instance of this class, see below. + *

+ */ +@Slf4j +public class OrderSuspendRequest extends Request { + + public OrderSuspendRequest(OrderSuspendRequestBody body) { + super(body); + } + + + @Override + public OrderSuspendResponse send() { + ResponseEntity res = rawSend(); + return OrderSuspendResponse.parse(JSON.parseObject(res.getBody())); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestBody.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestBody.java new file mode 100644 index 000000000..322b32131 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestBody.java @@ -0,0 +1,46 @@ +package org.jeecg.modules.business.domain.api.mabang.orderDoOrderAbnormal; + +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; +import org.jeecg.modules.business.domain.api.mabang.RequestBody; + +import java.util.Map; +import java.util.function.Function; + +@Getter +@Setter +public class OrderSuspendRequestBody implements RequestBody { + + private String platformOrderId; + private final String abnormal_label_name = "客户要求暂时不处理"; + private String description; + + public OrderSuspendRequestBody(String platformOrderId, String description) { + this.platformOrderId = platformOrderId; + this.description = description; + } + @Override + public String api() { + return "order-do-order-abnormal"; + } + + @Override + public Map parameters() { + JSONObject json = new JSONObject(); + putNonNull(json, "platformOrderId", platformOrderId); + putNonNull(json, "abnormal_label_name", abnormal_label_name); + putNonNull(json, "description", description); + return json; + } + private void putNonNull(JSONObject json, String key, E value) { + if (value != null) { + json.put(key, value); + } + } + private void putNonNull(JSONObject json, String key, E value, Function mapper) { + if (value != null) { + json.put(key, mapper.apply(value)); + } + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestErrorException.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestErrorException.java new file mode 100644 index 000000000..8fa4af1d7 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendRequestErrorException.java @@ -0,0 +1,11 @@ +package org.jeecg.modules.business.domain.api.mabang.orderDoOrderAbnormal; + +/** + * This class represents error that is returned by target order-do-order-abnormal API + * Message will contain error details. + */ +public class OrderSuspendRequestErrorException extends RuntimeException { + public OrderSuspendRequestErrorException(String msg) { + super(msg); + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendResponse.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendResponse.java new file mode 100644 index 000000000..930272855 --- /dev/null +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/api/mabang/orderDoOrderAbnormal/OrderSuspendResponse.java @@ -0,0 +1,42 @@ +package org.jeecg.modules.business.domain.api.mabang.orderDoOrderAbnormal; + +import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.modules.business.domain.api.mabang.Response; + +/** + * Immutable object + */ +@Slf4j +@Getter +public class OrderSuspendResponse extends Response { + + OrderSuspendResponse(Code successCode) { + super(successCode); + } + + /** + * Make an instance by parsing json, it only checks validity of code. + * if json is not valid, return null + * + * @param json the json to parse + * @return Instance + * @throws OrderSuspendRequestErrorException if response code represents error. + */ + public static OrderSuspendResponse parse(JSONObject json) throws OrderSuspendRequestErrorException { + log.debug("Constructing a response by json."); + String code = json.getString("code"); + if (code.equals("200")) + return new OrderSuspendResponse(Code.SUCCESS); + else + return new OrderSuspendResponse(Code.ERROR); + } + + @Override + public String toString() { + return "OrderSuspendResponse{" + + ", code=" + this.success() + + '}'; + } +} diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java index 3fa53bf4a..595f28608 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/job/AddPortraitTubeJob.java @@ -126,8 +126,8 @@ public class AddPortraitTubeJob implements Job { HashSet> adequateTubes = currentAndAdequateTubes.getRight(); // Do nothing if current tubes are the adequate tubes if (!currentTubes.containsAll(adequateTubes) || !adequateTubes.containsAll(currentTubes)) { - ChangeOrderRequestBody changeOrderRequestBody = new ChangeOrderRequestBody(mabangOrder.getPlatformOrderId(), - currentTubes, adequateTubes); + ChangeOrderRequestBody changeOrderRequestBody = new ChangeOrderRequestBody(mabangOrder.getPlatformOrderId(), null, + currentTubes, adequateTubes, null); changeOrderRequests.add(changeOrderRequestBody); } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ClientMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ClientMapper.java index 285d41986..e68ef7772 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ClientMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/ClientMapper.java @@ -33,4 +33,6 @@ public interface ClientMapper extends BaseMapper { Client getClientFromInvoice(@Param("invoiceNumber") String invoiceNumber); void anonymizePersonalData(@Param("period") int directClientAnonymizationPeriod); + + Client getByShopId(@Param("shopId") String shopId); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java index 8bd6e996e..5871009d7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/PlatformOrderMapper.java @@ -6,6 +6,7 @@ import org.jeecg.modules.business.domain.api.mabang.getorderlist.Order; import org.jeecg.modules.business.entity.PlatformOrder; import org.jeecg.modules.business.entity.PlatformOrderShopSync; import org.jeecg.modules.business.vo.OrderKpi; +import org.jeecg.modules.business.vo.PlatformOrderOption; import org.jeecg.modules.business.vo.ShippingFeeBillableOrders; import org.jeecg.modules.business.vo.clientPlatformOrder.ClientPlatformOrderPage; import org.jeecg.modules.business.vo.clientPlatformOrder.section.OrderQuantity; @@ -221,4 +222,6 @@ public interface PlatformOrderMapper extends BaseMapper { Map fetchShippingPeriodAndType(@Param("invoiceNumber") String invoiceNumber); void anonymizePersonalData(@Param("period") int indirectClientAnonymizationPeriod); + + List ordersByShop(@Param("shopID") String shopID); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ClientMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ClientMapper.xml index 8a353d7af..9edcf3f89 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ClientMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/ClientMapper.xml @@ -90,4 +90,10 @@ WHERE active = 0 AND IF (update_time IS NOT NULL, update_time, create_time) < DATE_SUB(NOW(), INTERVAL #{period} YEAR); + \ No newline at end of file diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml index 0db60aa52..ba302500b 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/PlatformOrderMapper.xml @@ -891,4 +891,11 @@ SET recipient = UUID() WHERE create_time < DATE_SUB(NOW(), INTERVAL #{period} YEAR); + + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml index aae7ba8d7..0b80bae6f 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/SkuMapper.xml @@ -287,8 +287,8 @@