From d2985d31ba7b387749b2350882172f675b923347 Mon Sep 17 00:00:00 2001 From: xin <1099200748@qq.com> Date: Mon, 14 Jul 2025 16:22:38 +0800 Subject: [PATCH] 订单流程补充 --- oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java | 8 oying-system/src/main/resources/mapper/system/MerchantMapper.xml | 6 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java | 32 ++ oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java | 41 ++ oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java | 13 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java | 14 oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java | 10 oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java | 6 oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java | 2 oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java | 3 oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml | 2 oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java | 26 ++ oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java | 2 oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java | 49 ++- oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java | 5 oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java | 15 oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml | 4 oying-common/src/main/java/com/oying/utils/RedisUtils.java | 20 oying-system/src/main/resources/mapper/sh/OrderMapper.xml | 175 ++++++------ oying-system/src/main/java/com/oying/modules/sh/domain/Order.java | 33 ++ oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml | 2 oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java | 9 oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java | 20 oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java | 50 +++ oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java | 10 oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java | 11 oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java | 15 oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java | 7 oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml | 176 +++++++++--- oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java | 7 oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml | 3 31 files changed, 527 insertions(+), 249 deletions(-) diff --git a/oying-common/src/main/java/com/oying/utils/RedisUtils.java b/oying-common/src/main/java/com/oying/utils/RedisUtils.java index bf5b094..4467f18 100644 --- a/oying-common/src/main/java/com/oying/utils/RedisUtils.java +++ b/oying-common/src/main/java/com/oying/utils/RedisUtils.java @@ -21,14 +21,15 @@ * @author Z */ @Component -@SuppressWarnings({"unchecked","all"}) +@SuppressWarnings({"unchecked", "all"}) public class RedisUtils { private static final Logger log = LoggerFactory.getLogger(RedisUtils.class); @Value("${jwt.generate-order-sn}") private String generateOrderSn; @Value("${wx.enabled}") private Boolean wxEnabled; - private static final String T = "-T-"; + private static final String T = "T-"; + private static final String OY = "OY-"; private RedisTemplate<Object, Object> redisTemplate; public RedisUtils(RedisTemplate<Object, Object> redisTemplate) { @@ -46,7 +47,7 @@ public String generateOrderSn(Integer i) { StringBuilder sb = new StringBuilder(); String date = new SimpleDateFormat("yyyyMMdd").format(new Date()); - String key = generateOrderSn + date; + String key = generateOrderSn + i + date; Long increment = increment(key); sb.append(date); sb.append(String.format("%04d", i)); @@ -58,7 +59,7 @@ } if (wxEnabled) { // 生产环境 - return sb.toString(); + return OY + sb.toString(); } else { // 测试环境 return T + sb.toString(); @@ -227,9 +228,10 @@ /** * 批量模糊删除key + * * @param pattern */ - public void scanDel(String pattern){ + public void scanDel(String pattern) { ScanOptions options = ScanOptions.scanOptions().match(pattern).build(); try (Cursor<byte[]> cursor = redisTemplate.executeWithStickyConnection( (RedisCallback<Cursor<byte[]>>) connection -> (Cursor<byte[]>) new ConvertingCursor<>( @@ -273,7 +275,7 @@ /** * 普通缓存获取 * - * @param key 键 + * @param key 键 * @param clazz 列表中元素的类型 * @return 值 */ @@ -300,7 +302,7 @@ * @return 值 */ public String getStr(String key) { - if(StrUtil.isBlank(key)){ + if (StrUtil.isBlank(key)) { return null; } Object value = redisTemplate.opsForValue().get(key); @@ -320,7 +322,7 @@ public List<Object> multiGet(List<String> keys) { List list = redisTemplate.opsForValue().multiGet(Sets.newHashSet(keys)); List resultList = Lists.newArrayList(); - Optional.ofNullable(list).ifPresent(e-> list.forEach(ele-> Optional.ofNullable(ele).ifPresent(resultList::add))); + Optional.ofNullable(list).ifPresent(e -> list.forEach(ele -> Optional.ofNullable(ele).ifPresent(resultList::add))); return resultList; } @@ -816,6 +818,7 @@ /** * 递增 + * * @param key * @return */ @@ -825,6 +828,7 @@ /** * 递减 + * * @param key * @return */ diff --git a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java index 69718a4..f7e4a21 100644 --- a/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java +++ b/oying-common/src/main/java/com/oying/utils/enums/OrderStatusEnum.java @@ -11,12 +11,11 @@ ONE(1, "支付成功"), TWO(2, "商家已接单"), THREE(3, "骑手已接单"), - FOUR(4, "商家已接单"), - FIVE(5, "商家已备货"), - SIX(6, "骑手已到店"), - SEVEN(7, "骑手已取货"), - EIGHT(8, "商品已送达"), - NINE(9, "订单已完成"), + FOUR(4, "商家已备货"), + FIVE(5, "骑手已到店"), + SIX(6, "骑手已取货,正在送货"), + SEVEN(7, "商品已送达"), + EIGHT(8, "订单已完成"), UNKNOWN(99, "未知枚举"); private final Integer key; diff --git a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java index 23ff7af..404251a 100644 --- a/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java @@ -5,8 +5,8 @@ import com.oying.modules.hwc.utils.SignUtil; import com.oying.modules.hwc.utils.XmlUtils; import com.oying.modules.security.config.SwiftPassProperties; -import com.oying.modules.sh.domain.Order; import com.oying.modules.sh.domain.OrderReturn; +import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.modules.sh.service.OrderReturnService; import com.oying.modules.sh.service.OrderService; import com.oying.utils.enums.PayStateEnum; @@ -46,21 +46,22 @@ String sign_type = map.get("sign_type"); String reSign = map.get("sign"); if (map.containsKey("sign")) { - Order order = orderService.getByOrderNum(map.get("out_trade_no")); - PayTypeEnum status = PayTypeEnum.find(order.getPayType()); + OrderResponse order = orderService.getByOrderNum(map.get("out_trade_no")); + PayTypeEnum status = PayTypeEnum.find(order.getOrder().getPayType()); if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) { log.error("验证签名错误!:{}", map.toString()); } else { if ("0".equals(map.get("status"))) { if ("0".equals(map.get("result_code"))) { //业务处理 - if (PayStateEnum.SUCCESS.getKey().equals(order.getPayState())) { + if (PayStateEnum.SUCCESS.getKey().equals(order.getOrder().getPayState())) { // 已处理 respString = "success"; } else { PayStateEnum stateEnum = PayStateEnum.NOTPAY; if ("0".equals(map.get("pay_result"))) { stateEnum = PayStateEnum.SUCCESS; + orderService.paySuccess(order); } orderService.updatePayStatus(map.get("out_trade_no"), stateEnum, map.get("pay_info"), map.get("time_end")); // 处理成功 diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java index 21544b0..1f33c2a 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/Order.java @@ -33,12 +33,16 @@ private Long orderId; @TableField(exist = false) - @ApiModelProperty(value = "用户角色") + @ApiModelProperty(value = "商品") private Set<OrderProductSnapshot> productSnapshots; @NotBlank @ApiModelProperty(value = "订单号") private String orderNum; + + @NotBlank + @ApiModelProperty(value = "取单号") + private String orderStoreNum; @NotNull @ApiModelProperty(value = "订单状态") @@ -48,12 +52,29 @@ @ApiModelProperty(value = "订单状态描述") private String orderStatusDescribe; - @ApiModelProperty(value = "订单状态描述") + @ApiModelProperty(value = "订单备注") private String orderRemark; @NotBlank @ApiModelProperty(value = "预计送达时间") private String orderTime; + + @NotNull + @ApiModelProperty(value = "配送费") + private BigDecimal sendPrice; + + @NotBlank + @ApiModelProperty(value = "配送类型") + private String sendType; + + @ApiModelProperty(value = "骑手Id") + private Long riderId; + + @ApiModelProperty(value = "骑手手机号") + private String riderPhone; + + @ApiModelProperty(value = "骑手名称") + private String riderName; @NotNull @ApiModelProperty(value = "用户id") @@ -139,14 +160,14 @@ if (o == null || getClass() != o.getClass()) { return false; } - Order user = (Order) o; - return Objects.equals(orderId, user.orderId) && - Objects.equals(orderNum, user.orderNum); + Order order = (Order) o; + return Objects.equals(orderId, order.orderId) && + Objects.equals(orderNum, order.orderNum); } @Override public int hashCode() { - return Objects.hash(orderId, username); + return Objects.hash(orderId, orderNum); } public void copy(Order source){ diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java index e1afb75..5a0b697 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderAddressSnapshot.java @@ -3,6 +3,7 @@ import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.copier.CopyOptions; + import java.math.BigDecimal; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -15,10 +16,10 @@ import lombok.Setter; /** -* @description / -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @description / + * @date 2025-06-11 + **/ @Getter @Setter @TableName("sh_order_address_snapshot") @@ -71,7 +72,7 @@ @ApiModelProperty(value = "地址标签(家/公司/学校等)") private String tag; - public void copy(OrderAddressSnapshot source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + public void copy(OrderAddressSnapshot source) { + BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } } diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java index 78ff273..f837d29 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderOperationLog.java @@ -26,6 +26,10 @@ private Long logId; @NotBlank + @ApiModelProperty(value = "订单号") + private String orderNum; + + @NotBlank @ApiModelProperty(value = "用户账号") private String username; @@ -45,17 +49,13 @@ @ApiModelProperty(value = "备注") private String remark; - @NotNull + @NotBlank @ApiModelProperty(value = "操作时的订单快照") private String snapshotData; @NotNull @ApiModelProperty(value = "操作时间") private Timestamp operationTime; - - @NotNull - @ApiModelProperty(value = "订单号") - private String orderNum; public void copy(OrderOperationLog source){ BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java index 06a4865..988d692 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturn.java @@ -1,5 +1,6 @@ package com.oying.modules.sh.domain; +import com.baomidou.mybatisplus.annotation.TableField; import com.oying.base.BaseEntity; import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; @@ -10,6 +11,8 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Objects; +import java.util.Set; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -46,6 +49,31 @@ @NotBlank @ApiModelProperty(value = "订单号") private String orderNum; + + @NotBlank + @ApiModelProperty(value = "预计送达时间") + private String orderTime; + + @NotBlank + @ApiModelProperty(value = "取单号") + private String orderStoreNum; + + @NotNull + @ApiModelProperty(value = "配送费") + private BigDecimal sendPrice; + + @NotBlank + @ApiModelProperty(value = "配送类型") + private String sendType; + + @ApiModelProperty(value = "骑手Id") + private Long riderId; + + @ApiModelProperty(value = "骑手手机号") + private String riderPhone; + + @ApiModelProperty(value = "骑手名称") + private String riderName; @NotBlank @ApiModelProperty(value = "支付类型") @@ -116,6 +144,28 @@ @ApiModelProperty(value = "审核信息") private String auditMessage; + @TableField(exist = false) + @ApiModelProperty(value = "商品") + private Set<OrderReturnProductSnapshot> productSnapshots; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OrderReturn info = (OrderReturn) o; + return Objects.equals(returnId, info.returnId) && + Objects.equals(returnNum, info.returnNum); + } + + @Override + public int hashCode() { + return Objects.hash(returnId, returnNum); + } + public void copy(OrderReturn source) { BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java index a792693..c3cf423 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/OrderReturnProductSnapshot.java @@ -4,19 +4,22 @@ import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.copier.CopyOptions; + import java.math.BigDecimal; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.Objects; + import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; /** -* @description / -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @description / + * @date 2025-06-11 + **/ @Data @TableName("sh_order_return_product_snapshot") public class OrderReturnProductSnapshot implements Serializable { @@ -83,7 +86,24 @@ @ApiModelProperty(value = "实付金额") private BigDecimal actuallyPayPrice; - public void copy(OrderReturnProductSnapshot source){ - BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + OrderReturnProductSnapshot snapshot = (OrderReturnProductSnapshot) o; + return Objects.equals(snapshotId, snapshot.snapshotId); + } + + @Override + public int hashCode() { + return Objects.hash(snapshotId); + } + + public void copy(OrderReturnProductSnapshot source) { + BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true)); } } diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java index b597d31..68b5161 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/UserAddress.java @@ -6,7 +6,6 @@ import cn.hutool.core.bean.copier.CopyOptions; import java.math.BigDecimal; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import java.io.Serializable; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; @@ -65,7 +64,6 @@ @ApiModelProperty(value = "纬度") private BigDecimal latitude; - @NotNull @ApiModelProperty(value = "是否默认: false") private Boolean isDefault = false; diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java index 76e8eee..1c54b2d 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderQueryCriteria.java @@ -1,16 +1,18 @@ package com.oying.modules.sh.domain.dto; import lombok.Data; + import java.sql.Timestamp; import java.util.List; + import io.swagger.annotations.ApiModelProperty; /** -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @date 2025-06-11 + **/ @Data -public class OrderQueryCriteria{ +public class OrderQueryCriteria { @ApiModelProperty(value = "页码", example = "1") private Integer page = 1; @@ -18,25 +20,25 @@ @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10; - @ApiModelProperty(value = "商品模糊查询") + @ApiModelProperty(value = "模糊查询(订单号、用户账号、描述、商品编号、条形码、商品名称、商品标题、商品描述)") private String blurry; @ApiModelProperty(value = "订单状态") - private Integer orderStatus; + private List<Integer> orderStatus; - @ApiModelProperty(value = "订单号") + @ApiModelProperty(value = "订单号模糊查询") private String orderNum; @ApiModelProperty(value = "用户id") private Long userId; - @ApiModelProperty(value = "用户账号") + @ApiModelProperty(value = "用户账号模糊查询") private String username; @ApiModelProperty(value = "门店ID") private Long storeId; - @ApiModelProperty(value = "描述") + @ApiModelProperty(value = "描述模糊查询") private String orderDescribe; @ApiModelProperty(value = "支付状态") diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java index 710cd22..66f2261 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/dto/OrderReturnQueryCriteria.java @@ -18,11 +18,17 @@ @ApiModelProperty(value = "每页数据量", example = "10") private Integer size = 10; + @ApiModelProperty(value = "偏移量", hidden = true) + private long offset; + + @ApiModelProperty(value = "商品模糊查询") + private String blurry; + @ApiModelProperty(value = "退单号") private String returnNum; @ApiModelProperty(value = "订单状态") - private Integer returnStatus; + private List<Integer> returnStatus; @ApiModelProperty(value = "订单号") private String orderNum; diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java b/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java index 03bb2da..37c0b10 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/request/SubmitOrder.java @@ -32,7 +32,7 @@ private List<ProductOrder> products; @ApiModelProperty(value = "备注") private String remark; - @NotBlank(message = "支付类型不能为空") + @NotNull(message = "支付类型不能为空") @ApiModelProperty(value = "支付类型") private PayTypeEnum payType; diff --git a/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java new file mode 100644 index 0000000..37d2760 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderResponse.java @@ -0,0 +1,26 @@ +package com.oying.modules.sh.domain.vo; + +import com.oying.modules.sh.domain.Order; +import com.oying.modules.sh.domain.OrderAddressSnapshot; +import com.oying.modules.sh.domain.OrderOperationLog; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @author xin + * @description + * @date 2025/7/14 14:51 + */ +@Getter +@Setter +public class OrderResponse { + + private Order order; + + private OrderAddressSnapshot address; + + private List<OrderOperationLog> operation; + +} diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java index a879aba..8172479 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java +++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderMapper.java @@ -2,6 +2,7 @@ import com.oying.modules.sh.domain.Order; import com.oying.modules.sh.domain.dto.OrderQueryCriteria; + import java.util.List; import org.apache.ibatis.annotations.Param; @@ -11,21 +12,23 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @date 2025-06-11 + **/ @Mapper public interface OrderMapper extends BaseMapper<Order> { - IPage<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, Page<Object> page); + IPage<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry, Page<Object> page); - List<Order> findAll(@Param("criteria") OrderQueryCriteria criteria); + List<Order> findAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry); - Long countAll(@Param("criteria") OrderQueryCriteria criteria); + Long countAll(@Param("criteria") OrderQueryCriteria criteria, @Param("blurry") String blurry); Order getByOrderNum(String orderNum); void updatePayStatus(String orderNum, String payState, String payMessage, String payTime); void updateCloseStatus(String orderNum, String payState); + + void updateOrderStatus(String orderNum, Integer key, String value); } diff --git a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java index 451b94f..cc2598b 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java +++ b/oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java @@ -2,7 +2,9 @@ import com.oying.modules.sh.domain.OrderReturn; import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria; + import java.util.List; + import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -10,17 +12,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; /** -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @date 2025-06-11 + **/ @Mapper public interface OrderReturnMapper extends BaseMapper<OrderReturn> { - IPage<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, Page<Object> page); + IPage<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("blurry") String blurry, Page<Object> page); - List<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria); + List<OrderReturn> findAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("criteria") String blurry); OrderReturn getByReturnNum(String returnNum); void updatePayStatus(String returnNum, String status, String time); + + Long countAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("criteria") String blurry); } diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java index 4bee5be..2815777 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java +++ b/oying-system/src/main/java/com/oying/modules/sh/rest/OrderController.java @@ -1,6 +1,7 @@ package com.oying.modules.sh.rest; import com.oying.annotation.Log; +import com.oying.modules.sh.domain.Order; import com.oying.modules.sh.domain.request.GeneratorOrder; import com.oying.modules.sh.domain.request.SubmitOrder; import com.oying.modules.sh.service.OrderService; @@ -59,6 +60,15 @@ return new ResponseEntity<>(R.success(orderService.queryAll(criteria, page)), HttpStatus.OK); } + @PostMapping + @Log("新增订单信息") + @ApiOperation("新增订单信息") + @PreAuthorize("@el.check('order:add')") + public ResponseEntity<Object> create(@Validated @RequestBody Order order) { + orderService.create(order); + return new ResponseEntity<>(R.success(), HttpStatus.CREATED); + } + @PostMapping("generator") @Log("小程序:生成确认订单") @ApiOperation("小程序:生成确认订单") diff --git a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java index cc70dad..6bf864f 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java +++ b/oying-system/src/main/java/com/oying/modules/sh/rest/UserAddressController.java @@ -62,12 +62,10 @@ @Log("小程序:新增用户地址") @ApiOperation("小程序:新增用户地址") public ResponseEntity<Object> createUserAddress(@Validated @RequestBody UserAddress resources) { - if (resources.getAddressId() != null) { - throw new BadRequestException("新增用户地址主键必须为空"); - } + resources.setAddressId(null); resources.setUserId(SecurityUtils.getCurrentUserId()); userAddressService.create(resources); - return new ResponseEntity<>(R.success(), HttpStatus.CREATED); + return new ResponseEntity<>(R.success(resources), HttpStatus.CREATED); } @PutMapping diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java index 3f1ed13..482091c 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java +++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderOperationLogService.java @@ -1,5 +1,7 @@ package com.oying.modules.sh.service; +import com.oying.modules.sh.domain.Order; +import com.oying.modules.sh.domain.OrderAddressSnapshot; import com.oying.modules.sh.domain.OrderOperationLog; import com.oying.modules.sh.domain.dto.OrderOperationLogQueryCriteria; import java.util.List; @@ -38,6 +40,11 @@ void create(OrderOperationLog resources); /** + * 创建 + */ + void create(Order order, OrderAddressSnapshot addressSnapshot); + + /** * 编辑 * @param resources / */ diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java index 1ae08fb..49f1dc7 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java +++ b/oying-system/src/main/java/com/oying/modules/sh/service/OrderService.java @@ -13,6 +13,7 @@ import com.oying.modules.sh.domain.request.GeneratorOrder; import com.oying.modules.sh.domain.request.SubmitOrder; import com.oying.modules.sh.domain.vo.OrderInfo; +import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.utils.PageResult; import com.oying.utils.enums.PayStateEnum; @@ -44,9 +45,9 @@ Order submitOrder(SubmitOrder submit, HttpServletRequest request); - Order getByOrderNum(String orderNum); + OrderResponse getByOrderNum(String orderNum); - void paySuccess(Order order); + void paySuccess(OrderResponse order); void updatePayStatus(String outTradeNo, PayStateEnum stateEnum, String payInfo, String timeEnd); diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java index fd06f35..d4b2546 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java @@ -1,7 +1,11 @@ package com.oying.modules.sh.service.impl; +import com.alibaba.fastjson2.JSON; +import com.oying.modules.sh.domain.Order; +import com.oying.modules.sh.domain.OrderAddressSnapshot; import com.oying.modules.sh.domain.OrderOperationLog; -import com.oying.utils.FileUtil; +import com.oying.utils.*; +import com.oying.utils.enums.OrderStatusEnum; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -10,20 +14,20 @@ import com.oying.modules.sh.mapper.OrderOperationLogMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.oying.utils.PageUtil; + +import java.sql.Timestamp; import java.util.List; import java.util.Map; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.LinkedHashMap; -import com.oying.utils.PageResult; /** -* @description 服务实现 -* @author lixin -* @date 2025-06-11 -**/ + * @author lixin + * @description 服务实现 + * @date 2025-06-11 + **/ @Service @RequiredArgsConstructor public class OrderOperationLogServiceImpl extends ServiceImpl<OrderOperationLogMapper, OrderOperationLog> implements OrderOperationLogService { @@ -31,12 +35,12 @@ private final OrderOperationLogMapper orderOperationLogMapper; @Override - public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page){ + public PageResult<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria, Page<Object> page) { return PageUtil.toPage(orderOperationLogMapper.findAll(criteria, page)); } @Override - public List<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria){ + public List<OrderOperationLog> queryAll(OrderOperationLogQueryCriteria criteria) { return orderOperationLogMapper.findAll(criteria); } @@ -53,6 +57,25 @@ @Override @Transactional(rollbackFor = Exception.class) + public void create(Order order, OrderAddressSnapshot addressSnapshot) { + Map<String, Object> map = new LinkedHashMap<>(); + map.put("order", order); + map.put("address", addressSnapshot); + String username = SecurityUtils.getCurrentUsername(); + Timestamp time = new Timestamp(System.currentTimeMillis()); + OrderOperationLog resources = new OrderOperationLog(); + resources.setOrderNum(order.getOrderNum()); + resources.setUsername(username); + resources.setUserType(ConstantsKey.BUYER); + resources.setOperation(OrderStatusEnum.ZERO.getKey()); + resources.setOperationDescribe(OrderStatusEnum.ZERO.getValue()); + resources.setRemark(username + ":" + time + ">" + OrderStatusEnum.ZERO.getValue() + ":" + order.getOrderNum()); + resources.setSnapshotData(JSON.toJSONString(map)); + resources.setOperationTime(time); + } + + @Override + @Transactional(rollbackFor = Exception.class) public void update(OrderOperationLog resources) { OrderOperationLog orderOperationLog = getById(resources.getLogId()); orderOperationLog.copy(resources); diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java index 3ad516b..f8fe21d 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java @@ -36,12 +36,15 @@ @Override public PageResult<OrderReturn> queryAll(OrderReturnQueryCriteria criteria, Page<Object> page) { - return PageUtil.toPage(orderReturnMapper.findAll(criteria, page)); + criteria.setOffset(page.offset()); + List<OrderReturn> list = orderReturnMapper.findAll(criteria, criteria.getBlurry()); + Long total = orderReturnMapper.countAll(criteria, criteria.getBlurry()); + return PageUtil.toPage(list, total); } @Override public List<OrderReturn> queryAll(OrderReturnQueryCriteria criteria) { - return orderReturnMapper.findAll(criteria); + return orderReturnMapper.findAll(criteria, criteria.getBlurry()); } @Override diff --git a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java index 243f9ea..be09c2c 100644 --- a/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java @@ -9,18 +9,14 @@ import com.oying.modules.pc.product.service.ProductService; import com.oying.modules.pc.store.domain.Store; import com.oying.modules.pc.store.service.StoreService; -import com.oying.modules.sh.domain.Order; -import com.oying.modules.sh.domain.OrderAddressSnapshot; -import com.oying.modules.sh.domain.OrderProductSnapshot; -import com.oying.modules.sh.domain.UserAddress; +import com.oying.modules.sh.domain.*; import com.oying.modules.sh.domain.request.GeneratorOrder; import com.oying.modules.sh.domain.request.ProductOrder; import com.oying.modules.sh.domain.request.SubmitOrder; import com.oying.modules.sh.domain.vo.OrderInfo; +import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.modules.sh.domain.vo.ProductInfo; -import com.oying.modules.sh.service.OrderAddressSnapshotService; -import com.oying.modules.sh.service.OrderProductSnapshotService; -import com.oying.modules.sh.service.UserAddressService; +import com.oying.modules.sh.service.*; import com.oying.utils.*; import com.oying.utils.enums.GenerateEnum; import com.oying.utils.enums.OrderStatusEnum; @@ -29,7 +25,6 @@ import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.oying.modules.sh.service.OrderService; import com.oying.modules.sh.domain.dto.OrderQueryCriteria; import com.oying.modules.sh.mapper.OrderMapper; import org.springframework.stereotype.Service; @@ -59,19 +54,20 @@ private final OrderAddressSnapshotService addressSnapshotService; private final RedisUtils redisUtils; private final StoreService storeService; + private final OrderOperationLogService operationLogService; private final static String DESCRIBE = "哦应:"; @Override public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page) { criteria.setOffset(page.offset()); - List<Order> list = orderMapper.findAll(criteria); - Long total = orderMapper.countAll(criteria); + List<Order> list = orderMapper.findAll(criteria, criteria.getBlurry()); + Long total = orderMapper.countAll(criteria, criteria.getBlurry()); return PageUtil.toPage(list, total); } @Override public List<Order> queryAll(OrderQueryCriteria criteria) { - return orderMapper.findAll(criteria); + return orderMapper.findAll(criteria, criteria.getBlurry()); } @Override @@ -122,19 +118,26 @@ if (openid == null || openid.isEmpty()) { throw new BadRequestException("OPENID错误"); } + + // 门店信息 + Store store = storeService.getById(submit.getStoreId()); + if (amount.compareTo(store.getDeliveryMinimum()) >= 0) { + throw new BadRequestException("起送金额:" + store.getDeliveryMinimum()); + } // 订单信息 Order order = new Order(); order.setOrderNum(orderNum); + order.setOrderStoreNum(redisUtils.generateOrderSn(Math.toIntExact(submit.getStoreId())).substring(orderNum.length() - 4)); order.setOrderStatus(OrderStatusEnum.ZERO.getKey()); order.setOrderStatusDescribe(OrderStatusEnum.ZERO.getValue()); order.setOrderRemark(submit.getRemark() != null ? submit.getRemark() : ""); order.setOrderTime(submit.getDateTime()); order.setUserId(SecurityUtils.getCurrentUserId()); order.setUsername(SecurityUtils.getCurrentUsername()); - Store store = storeService.getById(submit.getStoreId()); order.setStoreId(submit.getStoreId()); order.setStoreName(store.getStoreName()); order.setStoreLogo(store.getLogoImageUrl()); + order.setSendPrice(store.getDeliveryFee()); order.setOrderDescribe(DESCRIBE + submit.getStoreId()); order.setOriginalPrice(amount); order.setPaidPrice(amount); @@ -163,10 +166,14 @@ order.setPayTime(DateUtil.localDateTimeFormat(now.toLocalDateTime(), DateUtil.SDF_YMDHMS)); } UserAddress address = userAddressService.getById(submit.getAddressId()); - OrderAddressSnapshot snapshot = getOrderAddressSnapshot(orderNum, address); - addressSnapshotService.save(snapshot); + OrderAddressSnapshot addressSnapshot = getOrderAddressSnapshot(orderNum, address); + + addressSnapshotService.save(addressSnapshot); orderMapper.insert(order); productSnapshotService.saveBatch(snapshots); + + order.setProductSnapshots(new HashSet<>(snapshots)); + operationLogService.create(order, addressSnapshot); return order; } @@ -228,13 +235,18 @@ @Override @Transactional(rollbackFor = Exception.class) - public Order getByOrderNum(String orderNum) { - return orderMapper.getByOrderNum(orderNum); + public OrderResponse getByOrderNum(String orderNum) { + OrderResponse response = new OrderResponse(); + response.setOrder(orderMapper.getByOrderNum(orderNum)); + response.setAddress(addressSnapshotService.queryByOrderNum(orderNum)); + response.setOperation(operationLogService.getByOrderNum(orderNum)); + return response; } @Override @Transactional(rollbackFor = Exception.class) - public void paySuccess(Order order) { + public void paySuccess(OrderResponse order) { + orderMapper.updateOrderStatus(order.getOrder().getOrderNum(), OrderStatusEnum.TWO.getKey(), OrderStatusEnum.TWO.getValue()); } @Override @@ -246,7 +258,7 @@ @Override @Transactional(rollbackFor = Exception.class) public void closeOrder(String orderNum) { - Order order = getByOrderNum(orderNum); + Order order = orderMapper.getByOrderNum(orderNum); if (order == null) { throw new BadRequestException("订单不存在"); } @@ -271,6 +283,7 @@ @Transactional(rollbackFor = Exception.class) public void create(Order resources) { orderMapper.insert(resources); + throw new BadRequestException("未开放"); } @Override diff --git a/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java index 2d6f04b..294e728 100644 --- a/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java +++ b/oying-system/src/main/java/com/oying/modules/system/domain/dto/MerchantsQueryCriteria.java @@ -24,6 +24,9 @@ private String blurry; @ApiModelProperty(value = "状态") + private String merchantType; + + @ApiModelProperty(value = "状态") private String enabled; private List<Timestamp> createTime; } diff --git a/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java index fc2cc34..5e17186 100644 --- a/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java +++ b/oying-system/src/main/java/com/oying/modules/system/service/impl/MerchantServiceImpl.java @@ -15,19 +15,21 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.oying.utils.PageUtil; + import java.util.List; import java.util.Map; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.LinkedHashMap; + import com.oying.utils.PageResult; /** -* @description 服务实现 -* @author lixin -* @date 2025-05-29 -**/ + * @author lixin + * @description 服务实现 + * @date 2025-05-29 + **/ @Service @RequiredArgsConstructor public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> implements MerchantService { @@ -36,12 +38,12 @@ private final UserMerchantService userMerchantService; @Override - public PageResult<Merchant> queryAll(MerchantsQueryCriteria criteria, Page<Object> page){ + public PageResult<Merchant> queryAll(MerchantsQueryCriteria criteria, Page<Object> page) { return PageUtil.toPage(merchantMapper.findAll(criteria, page)); } @Override - public List<Merchant> queryAll(MerchantsQueryCriteria criteria){ + public List<Merchant> queryAll(MerchantsQueryCriteria criteria) { return merchantMapper.findAll(criteria); } @@ -76,6 +78,7 @@ List<Map<String, Object>> list = new ArrayList<>(); for (Merchant merchant : all) { Map<String, Object> map = new LinkedHashMap<>(); + map.put("商户类型", merchant.getMerchantType()); map.put("名称", merchant.getMerchantName()); map.put("商户编码", merchant.getMerchantCode()); map.put("营业执照号", merchant.getBusinessLicense()); diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml index 5af3eb5..03ca27b 100644 --- a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml +++ b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml @@ -65,4 +65,4 @@ </update> -</mapper> \ No newline at end of file +</mapper> diff --git a/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml index c7d07c8..5301d9e 100644 --- a/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml +++ b/oying-system/src/main/resources/mapper/sh/OrderAddressSnapshotMapper.xml @@ -18,7 +18,8 @@ </resultMap> <sql id="Base_Column_List"> - snapshot_id, order_num, receiver_name, receiver_phone, province, city, district, street, short_address, detail, longitude, latitude, tag + snapshot_id, order_num, receiver_name, receiver_phone, province, city, district, street, short_address, + detail, longitude, latitude, tag </sql> <select id="findAll" resultMap="BaseResultMap"> diff --git a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml index bd2fb2c..61211e2 100644 --- a/oying-system/src/main/resources/mapper/sh/OrderMapper.xml +++ b/oying-system/src/main/resources/mapper/sh/OrderMapper.xml @@ -4,20 +4,23 @@ <resultMap id="BaseResultMap" type="com.oying.modules.sh.domain.Order"> <id column="order_id" property="orderId"/> <result column="order_num" property="orderNum"/> + <result column="order_store_num" property="orderStoreNum"/> <result column="order_status" property="orderStatus"/> <result column="order_status_describe" property="orderStatusDescribe"/> <result column="order_remark" property="orderRemark"/> <result column="order_time" property="orderTime"/> + <result column="send_price" property="sendPrice"/> + <result column="send_type" property="sendType"/> <result column="user_id" property="userId"/> <result column="username" property="username"/> <result column="store_id" property="storeId"/> <result column="store_name" property="storeName"/> <result column="store_logo" property="storeLogo"/> <result column="order_describe" property="orderDescribe"/> - <result column="original_price" property="originalPrice"/> - <result column="paid_price" property="paidPrice"/> - <result column="actually_pay_price" property="actuallyPayPrice"/> - <result column="pay_state" property="payState"/> + <result column="order_original_price" property="originalPrice"/> + <result column="order_paid_price" property="paidPrice"/> + <result column="order_actually_pay_price" property="actuallyPayPrice"/> + <result column="order_pay_state" property="payState"/> <result column="pay_message" property="payMessage"/> <result column="pay_type" property="payType"/> <result column="pay_time" property="payTime"/> @@ -33,6 +36,9 @@ <result column="create_time" property="createTime"/> <result column="update_by" property="updateBy"/> <result column="update_time" property="updateTime"/> + <result column="rider_id" property="riderId"/> + <result column="rider_phone" property="riderPhone"/> + <result column="rider_name" property="riderName"/> <collection property="productSnapshots" ofType="com.oying.modules.sh.domain.OrderProductSnapshot"> <id column="snapshot_id" property="snapshotId"/> <result column="product_id" property="productId"/> @@ -53,16 +59,71 @@ </resultMap> <sql id="Base_Column_List"> - o.order_id, o.order_num, o.order_status, o.order_status_describe, o.order_remark, o.order_time, o.user_id, o.username, o.store_id, - o.store_name, o.store_logo, o.order_describe, o.original_price, o.paid_price, o.actually_pay_price, o.pay_state, o.pay_message, - o.pay_type, o.pay_time, o.expire_time, o.openid, o.app_id, o.timestamp, o.nonce_str, o.package_val, o.sign_type, o.pay_sign, - o.create_by, o.create_time, o.update_by, o.update_time + o.order_id, o.order_num, o.order_store_num, o.order_status, o.order_status_describe, + o.order_remark, o.order_time, o.send_time, o.send_type, o.user_id, o.username, o.store_id, + o.store_name, o.store_logo, o.order_describe, o.original_price order_original_price, o.paid_price order_paid_price, + o.actually_pay_price order_actually_pay_price, o.pay_state order_pay_state, o.pay_message, o.pay_type, o.pay_time, o.expire_time, + o.openid, o.app_id, o.timestamp, o.nonce_str, o.package_val, o.sign_type, o.pay_sign, + o.create_by, o.create_time, o.update_by, o.update_time, o.rider_id, o.rider_phone, o.rider_name </sql> <sql id="product_Column_List"> p.snapshot_id, p.product_id, p.product_code, p.product_barcode, p.product_name, p.product_title, p.product_main_image, p.product_description, p.param_data, p.unit_price, p.detail_count, p.original_price, p.paid_price, p.actually_pay_price, p.pay_state + </sql> + + <sql id="Where_Sql"> + <where> + <if test="criteria.orderNum != null and criteria.orderNum != ''"> + and o.order_num like concat('%',#{criteria.orderNum},'%') + </if> + <if test="criteria.orderStatus != null and criteria.orderStatus.size() > 0"> + and o.order_status IN + <foreach collection="criteria.orderStatus" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="criteria.userId != null and criteria.userId != ''"> + and o.user_id = #{criteria.userId} + </if> + <if test="criteria.username != null and criteria.username != ''"> + and o.username like concat('%',#{criteria.username},'%') + </if> + <if test="criteria.storeId != null and criteria.storeId != ''"> + and o.store_id = #{criteria.storeId} + </if> + <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''"> + and o.order_describe like concat('%',#{criteria.orderDescribe},'%') + </if> + <if test="criteria.payState != null and criteria.payState != ''"> + and o.pay_state = #{criteria.payState} + </if> + <if test="criteria.payType != null and criteria.payType != ''"> + and o.pay_type = #{criteria.payType} + </if> + <if test="criteria.payTime != null and criteria.payTime.size() > 0"> + AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]} + </if> + <if test="criteria.createTime != null and criteria.createTime.size() > 0"> + AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} + </if> + </where> + </sql> + + <sql id="Where_Sql_Product"> + <where> + <if test="blurry != null and blurry != ''"> + and (p.product_code like concat('%',#{blurry},'%') + or p.product_barcode like concat('%',#{blurry},'%') + or p.product_name like concat('%',#{blurry},'%') + or p.product_title like concat('%',#{blurry},'%') + or p.product_description like concat('%',#{blurry},'%') + or o.orderNum like concat('%',#{blurry},'%') + or o.order_describe like concat('%',#{blurry},'%') + or o.username like concat('%',#{blurry},'%')) + </if> + </where> </sql> <update id="updatePayStatus"> @@ -79,6 +140,13 @@ where order_num = #{orderNum} </update> + <update id="updateOrderStatus"> + update sh_order + set order_status = #{key}, + order_status_describe = #{value} + where order_num = #{orderNum} + </update> + <select id="findAll" resultMap="BaseResultMap"> select o.*, <include refid="product_Column_List"/> @@ -86,59 +154,27 @@ select <include refid="Base_Column_List"/> from sh_order as o - <where> - <if test="criteria.orderNum != null and criteria.orderNum != ''"> - and o.order_num like concat('%',#{criteria.orderNum},'%') - </if> - <if test="criteria.orderStatus != null and criteria.orderStatus != ''"> - and o.order_status = #{criteria.orderStatus} - </if> - <if test="criteria.userId != null and criteria.userId != ''"> - and o.user_id = #{criteria.userId} - </if> - <if test="criteria.username != null and criteria.username != ''"> - and o.username like concat('%',#{criteria.username},'%') - </if> - <if test="criteria.storeId != null and criteria.storeId != ''"> - and o.store_id = #{criteria.storeId} - </if> - <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''"> - and o.order_describe like concat('%',#{criteria.orderDescribe},'%') - </if> - <if test="criteria.payState != null and criteria.payState != ''"> - and o.pay_state = #{criteria.payState} - </if> - <if test="criteria.payType != null and criteria.payType != ''"> - and o.pay_type = #{criteria.payType} - </if> - <if test="criteria.payTime != null and criteria.payTime.size() > 0"> - AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]} - </if> - <if test="criteria.createTime != null and criteria.createTime.size() > 0"> - AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} - </if> - </where> + <include refid="Where_Sql"/> order by o.order_id desc <if test="criteria.offset != null"> limit #{criteria.offset}, #{criteria.size} </if> ) o left join sh_order_product_snapshot as p on p.order_num = o.order_num - where 1=1 - <if test="criteria.blurry != null and criteria.blurry != ''"> - and (o.product_code like concat('%',#{criteria.blurry},'%') - or o.product_barcode like concat('%',#{criteria.blurry},'%') - or o.product_name like concat('%',#{criteria.blurry},'%') - or o.product_title like concat('%',#{criteria.blurry},'%') - or o.product_description like concat('%',#{criteria.blurry},'%')) - </if> + <include refid="Where_Sql_Product"/> order by o.order_id desc </select> <select id="getByOrderNum" resultMap="BaseResultMap"> + select o.*, + <include refid="product_Column_List"/> + from ( select <include refid="Base_Column_List"/> from sh_order as o + ) o + left join sh_order_product_snapshot as p on p.order_num = o.order_num where o.order_num = #{orderNum} + order by o.order_id desc </select> <select id="countAll" resultType="java.lang.Long"> select count(1) @@ -152,47 +188,10 @@ select <include refid="Base_Column_List"/> from sh_order as o - <where> - <if test="criteria.orderNum != null and criteria.orderNum != ''"> - and o.order_num like concat('%',#{criteria.orderNum},'%') - </if> - <if test="criteria.orderStatus != null and criteria.orderStatus != ''"> - and o.order_status = #{criteria.orderStatus} - </if> - <if test="criteria.userId != null and criteria.userId != ''"> - and o.user_id = #{criteria.userId} - </if> - <if test="criteria.username != null and criteria.username != ''"> - and o.username like concat('%',#{criteria.username},'%') - </if> - <if test="criteria.storeId != null and criteria.storeId != ''"> - and o.store_id = #{criteria.storeId} - </if> - <if test="criteria.orderDescribe != null and criteria.orderDescribe != ''"> - and o.order_describe like concat('%',#{criteria.orderDescribe},'%') - </if> - <if test="criteria.payState != null and criteria.payState != ''"> - and o.pay_state = #{criteria.payState} - </if> - <if test="criteria.payType != null and criteria.payType != ''"> - and o.pay_type = #{criteria.payType} - </if> - <if test="criteria.payTime != null and criteria.payTime.size() > 0"> - AND o.pay_time BETWEEN #{criteria.payTime[0]} AND #{criteria.payTime[1]} - </if> - <if test="criteria.createTime != null and criteria.createTime.size() > 0"> - AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} - </if> - </where> + <include refid="Where_Sql"/> ) o left join sh_order_product_snapshot as p on p.order_num = o.order_num - where 1=1 - <if test="criteria.blurry != null and criteria.blurry != ''"> - and (p.product_code like concat('%',#{criteria.blurry},'%') - or p.product_barcode like concat('%',#{criteria.blurry},'%') - or p.product_name like concat('%',#{criteria.blurry},'%') - or p.product_title like concat('%',#{criteria.blurry},'%') - or p.product_description like concat('%',#{criteria.blurry},'%')) - </if>) t + <include refid="Where_Sql_Product"/> + ) t </select> </mapper> diff --git a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml index c975d0e..86f4724 100644 --- a/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml +++ b/oying-system/src/main/resources/mapper/sh/OrderOperationLogMapper.xml @@ -35,12 +35,12 @@ AND operation_time BETWEEN #{criteria.operationTime[0]} AND #{criteria.operationTime[1]} </if> </where> - order by log_id desc + order by log_id </select> <select id="getByOrderNum" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from sh_order_operation_log - where order_num = #{orderNum} order by log_id desc + where order_num = #{orderNum} order by log_id </select> </mapper> diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml index 4b091cd..de091c0 100644 --- a/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml +++ b/oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml @@ -7,15 +7,19 @@ <result column="return_status" property="returnStatus"/> <result column="return_status_describe" property="returnStatusDescribe"/> <result column="order_num" property="orderNum"/> + <result column="order_store_num" property="orderStoreNum"/> + <result column="order_time" property="orderTime"/> + <result column="send_price" property="sendPrice"/> + <result column="send_type" property="sendType"/> <result column="pay_type" property="payType"/> <result column="user_id" property="userId"/> <result column="username" property="username"/> <result column="store_id" property="storeId"/> <result column="store_name" property="storeName"/> <result column="store_logo" property="storeLogo"/> - <result column="original_price" property="originalPrice"/> - <result column="paid_price" property="paidPrice"/> - <result column="actually_pay_price" property="actuallyPayPrice"/> + <result column="order_original_price" property="originalPrice"/> + <result column="order_paid_price" property="paidPrice"/> + <result column="order_actually_pay_price" property="actuallyPayPrice"/> <result column="refund_price" property="refundPrice"/> <result column="refund_status" property="refundStatus"/> <result column="success_time" property="successTime"/> @@ -31,63 +35,137 @@ <result column="create_time" property="createTime"/> <result column="update_by" property="updateBy"/> <result column="update_time" property="updateTime"/> + <result column="rider_id" property="riderId"/> + <result column="rider_phone" property="riderPhone"/> + <result column="rider_name" property="riderName"/> + <collection property="productSnapshots" ofType="com.oying.modules.sh.domain.OrderReturnProductSnapshot"> + <id column="snapshot_id" property="snapshotId"/> + <result column="product_id" property="productId"/> + <result column="product_code" property="productCode"/> + <result column="product_barcode" property="productBarcode"/> + <result column="product_name" property="productName"/> + <result column="product_title" property="productTitle"/> + <result column="product_main_image" property="productMainImage"/> + <result column="product_description" property="productDescription"/> + <result column="param_data" property="paramData"/> + <result column="unit_price" property="unitPrice"/> + <result column="detail_count" property="detailCount"/> + <result column="original_price" property="originalPrice"/> + <result column="paid_price" property="paidPrice"/> + <result column="actually_pay_price" property="actuallyPayPrice"/> + </collection> </resultMap> <sql id="Base_Column_List"> - return_id, return_num, return_status, return_status_describe, order_num, pay_type, user_id, username, store_id, store_name, store_logo, original_price, paid_price, actually_pay_price, refund_price, refund_status, success_time, channel, reason, remark, photos, audit_status, audit_user, audit_time, audit_message, create_by, create_time, update_by, update_time + o.return_id, o.return_num, o.return_status, o.return_status_describe, o.order_num, o.order_store_num, + o.order_time, o.send_time, o.send_type, o.pay_type, o.user_id, o.username, o.store_id, o.store_name, o.store_logo, + o.original_price order_original_price, o.paid_price order_paid_price, o.actually_pay_price order_actually_pay_price, + o.refund_price, o.refund_status, o.success_time, o.channel, o.reason, o.remark, o.photos, o.audit_status, + o.audit_user, o.audit_time, o.audit_message, o.rider_id, o.rider_phone, o.rider_name, + o.create_by, o.create_time, o.update_by, o.update_time </sql> + + <sql id="Product_Column_List"> + p.snapshot_id, p.product_id, p.product_code, p.product_barcode, p.product_name, p.product_title, p.product_main_image, + p.product_description, p.param_data, p.unit_price, p.detail_count, p.original_price, p.paid_price, p.actually_pay_price + </sql> + <sql id="Where_sql"> + <where> + <if test="criteria.returnNum != null"> + and o.return_num like concat('%',#{criteria.returnNum},'%') + </if> + <if test="criteria.returnStatus != null and criteria.returnStatus.size() > 0"> + and o.return_status IN + <foreach collection="criteria.returnStatus" item="item" open="(" separator="," close=")"> + #{item} + </foreach> + </if> + <if test="criteria.orderNum != null"> + and o.order_num like concat('%',#{criteria.orderNum},'%') + </if> + <if test="criteria.payType != null"> + and o.pay_type = #{criteria.payType} + </if> + <if test="criteria.userId != null"> + and o.user_id = #{criteria.userId} + </if> + <if test="criteria.username != null"> + and o.username like concat('%',#{criteria.username},'%') + </if> + <if test="criteria.storeId != null"> + and o.store_id = #{criteria.storeId} + </if> + <if test="criteria.refundStatus != null"> + and o.refund_status = #{criteria.refundStatus} + </if> + <if test="criteria.auditUser != null"> + and o.audit_user like concat('%',#{criteria.auditUser},'%') + </if> + <if test="criteria.successTime != null and criteria.successTime.size() > 0"> + AND o.success_time BETWEEN #{criteria.successTime[0]} AND #{criteria.successTime[1]} + </if> + <if test="criteria.auditTime != null and criteria.auditTime.size() > 0"> + AND o.audit_time BETWEEN #{criteria.auditTime[0]} AND #{criteria.auditTime[1]} + </if> + <if test="criteria.createTime != null and criteria.createTime.size() > 0"> + AND o.create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} + </if> + </where> + </sql> + + <sql id="Where_Sql_Product"> + <where> + <if test="blurry != null and blurry != ''"> + and (p.product_code like concat('%',#{blurry},'%') + or p.product_barcode like concat('%',#{blurry},'%') + or p.product_name like concat('%',#{blurry},'%') + or p.product_title like concat('%',#{blurry},'%') + or p.product_description like concat('%',#{blurry},'%') + or o.orderNum like concat('%',#{blurry},'%') + or o.order_describe like concat('%',#{blurry},'%') + or o.username like concat('%',#{blurry},'%') + or o.order_num like concat('%',#{blurry},'%')) + </if> + </where> + </sql> + <update id="updatePayStatus"> - update sh_order_return set return_status = #{payState}, success_time = #{payTime} - where order_num = #{orderNum} + update sh_order_return + set return_status = #{payState}, + success_time = #{payTime} + where order_num = #{orderNum} </update> <select id="findAll" resultMap="BaseResultMap"> - select + select o.* , + <include refid="Product_Column_List"/> + from ( select <include refid="Base_Column_List"/> - from sh_order_return - <where> - <if test="criteria.returnNum != null"> - and return_num like concat('%',#{criteria.returnNum},'%') - </if> - <if test="criteria.returnStatus != null"> - and return_status = #{criteria.returnStatus} - </if> - <if test="criteria.orderNum != null"> - and order_num like concat('%',#{criteria.orderNum},'%') - </if> - <if test="criteria.payType != null"> - and pay_type = #{criteria.payType} - </if> - <if test="criteria.userId != null"> - and user_id = #{criteria.userId} - </if> - <if test="criteria.username != null"> - and username like concat('%',#{criteria.username},'%') - </if> - <if test="criteria.storeId != null"> - and store_id = #{criteria.storeId} - </if> - <if test="criteria.refundStatus != null"> - and refund_status = #{criteria.refundStatus} - </if> - <if test="criteria.auditUser != null"> - and audit_user like concat('%',#{criteria.auditUser},'%') - </if> - <if test="criteria.successTime != null and criteria.successTime.size() > 0"> - AND success_time BETWEEN #{criteria.successTime[0]} AND #{criteria.successTime[1]} - </if> - <if test="criteria.auditTime != null and criteria.auditTime.size() > 0"> - AND audit_time BETWEEN #{criteria.auditTime[0]} AND #{criteria.auditTime[1]} - </if> - <if test="criteria.createTime != null and criteria.createTime.size() > 0"> - AND create_time BETWEEN #{criteria.createTime[0]} AND #{criteria.createTime[1]} - </if> - </where> - order by return_id desc + from sh_order_return as o + <include refid="Where_sql"/> + order by o.return_id desc ) o + left join sh_order_return_product_snapshot as p on p.return_num = o.return_num + <include refid="Where_Sql_Product"/> + order by o.order_id desc </select> <select id="getByReturnNum" resultMap="BaseResultMap"> - select + select o.* from ( select <include refid="Base_Column_List"/> - from sh_order_return where return_num = #{returnNum} + from sh_order_return as o ) o + left join sh_order_return_product_snapshot as p on p.return_num = o.return_num + from sh_order_return as o where o.return_num = #{returnNum} + </select> + <select id="countAll" resultType="java.lang.Long"> + select count(1) from ( + select distinct o.* + p.product_code, p.product_barcode, p.product_name, p.product_title, p.product_description + from ( select + <include refid="Base_Column_List"/> + from sh_order_return as o + <include refid="Where_sql"/> + ) o + left join sh_order_return_product_snapshot as p on p.return_num = o.return_num + <include refid="Where_Sql_Product"/> + ) t </select> </mapper> diff --git a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml index 8b47565..34006bf 100644 --- a/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml +++ b/oying-system/src/main/resources/mapper/sh/OrderReturnOperationLogMapper.xml @@ -42,6 +42,6 @@ <include refid="Base_Column_List"/> from sh_order_return_operation_log where return_num = #{returnNum} - order by log_id desc + order by log_id </select> </mapper> diff --git a/oying-system/src/main/resources/mapper/system/MerchantMapper.xml b/oying-system/src/main/resources/mapper/system/MerchantMapper.xml index 1c9d082..d0e02ff 100644 --- a/oying-system/src/main/resources/mapper/system/MerchantMapper.xml +++ b/oying-system/src/main/resources/mapper/system/MerchantMapper.xml @@ -3,6 +3,7 @@ <mapper namespace="com.oying.modules.system.mapper.MerchantMapper"> <resultMap id="BaseResultMap" type="com.oying.modules.system.domain.Merchant"> <id column="merchant_id" property="merchantId"/> + <result column="merchant_type" property="merchantType"/> <result column="merchant_name" property="merchantName"/> <result column="merchant_code" property="merchantCode"/> <result column="business_license" property="businessLicense"/> @@ -20,7 +21,7 @@ </resultMap> <sql id="Base_Column_List"> - merchant_id, merchant_name, merchant_code, business_license, business_license_path, contact_mobile, merchant_sort, enabled, create_by, update_by, create_time, update_time, audit_user, audit_time, audit_message + merchant_id, merchant_type, merchant_name, merchant_code, business_license, business_license_path, contact_mobile, merchant_sort, enabled, create_by, update_by, create_time, update_time, audit_user, audit_time, audit_message </sql> <select id="findAll" resultMap="BaseResultMap"> @@ -36,6 +37,9 @@ or contact_mobile like concat('%', #{criteria.blurry}, '%') ) </if> + <if test="criteria.merchantType != null and criteria.merchantType != ''"> + and merchant_type = #{criteria.merchantType} + </if> <if test="criteria.enabled != null"> and enabled = #{criteria.enabled} </if> -- Gitblit v1.9.3