feat(order): 增加订单商品销量更新功能
- 修改订单支付成功逻辑,增加商品销量更新调用- 在 OrderItemService 中新增 addSaleNum 方法用于批量更新商品销量 - 在 ProductMapper 中新增 updateSales 方法实现销量累加 - 调整常量 ORDER_CANCEL_TIME从15分钟延长至30分钟 - 移除冗余的类导入和无用注解 - 更新 AppMemberController 关注相关接口的日志标题与描述
This commit is contained in:
parent
841074baeb
commit
e1d24e1ae7
@ -27,14 +27,12 @@ import com.wzj.soopin.transaction.convert.WithdrawConvert;
|
|||||||
import com.wzj.soopin.transaction.domain.bo.ChargeBO;
|
import com.wzj.soopin.transaction.domain.bo.ChargeBO;
|
||||||
import com.wzj.soopin.transaction.domain.bo.WithdrawBO;
|
import com.wzj.soopin.transaction.domain.bo.WithdrawBO;
|
||||||
import com.wzj.soopin.transaction.domain.entity.InitiateBatchTransferResponseNew;
|
import com.wzj.soopin.transaction.domain.entity.InitiateBatchTransferResponseNew;
|
||||||
import com.wzj.soopin.transaction.domain.entity.WxAuthResponse;
|
|
||||||
import com.wzj.soopin.transaction.domain.po.Withdraw;
|
import com.wzj.soopin.transaction.domain.po.Withdraw;
|
||||||
import com.wzj.soopin.transaction.enums.WithdrawType;
|
import com.wzj.soopin.transaction.enums.WithdrawType;
|
||||||
import com.wzj.soopin.transaction.service.IAccountBillService;
|
import com.wzj.soopin.transaction.service.IAccountBillService;
|
||||||
import com.wzj.soopin.transaction.service.IChargeService;
|
import com.wzj.soopin.transaction.service.IChargeService;
|
||||||
import com.wzj.soopin.transaction.service.IWithdrawService;
|
import com.wzj.soopin.transaction.service.IWithdrawService;
|
||||||
import com.wzj.soopin.transaction.service.impl.WxAuthService;
|
import com.wzj.soopin.transaction.service.impl.WxAuthService;
|
||||||
import com.wzj.soopin.transaction.service.impl.WxPayService;
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -52,11 +50,8 @@ import org.dromara.common.ratelimiter.annotation.RateLimiter;
|
|||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
import org.dromara.common.social.config.properties.SocialProperties;
|
import org.dromara.common.social.config.properties.SocialProperties;
|
||||||
import org.dromara.common.social.utils.SocialUtils;
|
import org.dromara.common.social.utils.SocialUtils;
|
||||||
import org.springframework.data.annotation.LastModifiedDate;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/app/member")
|
@RequestMapping("/app/member")
|
||||||
@Tag(name = "会员管理")
|
@Tag(name = "会员管理")
|
||||||
@ -244,8 +239,8 @@ public class AppMemberController {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "用户注销")
|
@Operation(summary = "关注用户")
|
||||||
@Log(title = "用户注销 ", businessType = BusinessType.UPDATE)
|
@Log(title = "关注用户 ", businessType = BusinessType.UPDATE)
|
||||||
@PostMapping("/follow")
|
@PostMapping("/follow")
|
||||||
public R follow(@RequestParam Long vloggerId) {
|
public R follow(@RequestParam Long vloggerId) {
|
||||||
LoginUser loginUser= LoginHelper.getLoginUser();
|
LoginUser loginUser= LoginHelper.getLoginUser();
|
||||||
@ -255,8 +250,8 @@ public class AppMemberController {
|
|||||||
fansService.doFollow(loginUser.getUserId(), vloggerId);
|
fansService.doFollow(loginUser.getUserId(), vloggerId);
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
@Operation(summary = "用户注销")
|
@Operation(summary = "取消关注")
|
||||||
@Log(title = "用户注销 ", businessType = BusinessType.UPDATE)
|
@Log(title = "取消关注 ", businessType = BusinessType.UPDATE)
|
||||||
@PostMapping("/cancel")
|
@PostMapping("/cancel")
|
||||||
public R cancelFollow(@RequestParam Long vloggerId) {
|
public R cancelFollow(@RequestParam Long vloggerId) {
|
||||||
LoginUser loginUser= LoginHelper.getLoginUser();
|
LoginUser loginUser= LoginHelper.getLoginUser();
|
||||||
|
@ -75,7 +75,7 @@ public interface Constants {
|
|||||||
/**
|
/**
|
||||||
* 订单未支付自动取消时间(分钟)
|
* 订单未支付自动取消时间(分钟)
|
||||||
*/
|
*/
|
||||||
Long ORDER_CANCEL_TIME = 15L;
|
Long ORDER_CANCEL_TIME = 30L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单支付未核销自动退款时间(天)
|
* 订单支付未核销自动退款时间(天)
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package com.wzj.soopin.goods.domain.entity;
|
package com.wzj.soopin.goods.domain.entity;
|
||||||
|
|
||||||
|
import ch.qos.logback.core.joran.spi.NoAutoStart;
|
||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Builder;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import org.apache.ibatis.type.JdbcType;
|
import org.apache.ibatis.type.JdbcType;
|
||||||
@ -23,6 +26,9 @@ import java.math.BigDecimal;
|
|||||||
@Schema(description = "商品信息对象")
|
@Schema(description = "商品信息对象")
|
||||||
@Data
|
@Data
|
||||||
@TableName("pms_product")
|
@TableName("pms_product")
|
||||||
|
@Builder
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoAutoStart
|
||||||
public class Product extends BaseEntity {
|
public class Product extends BaseEntity {
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
@ -9,6 +9,7 @@ import com.wzj.soopin.goods.domain.vo.ProductVO;
|
|||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
|
import org.apache.ibatis.annotations.Update;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -46,4 +47,8 @@ public interface ProductMapper extends BaseMapper<Product> {
|
|||||||
|
|
||||||
|
|
||||||
IPage<ProductVO> getProduct(@Param("page") Page<Product> page, @Param("query") ProductBo query);
|
IPage<ProductVO> getProduct(@Param("page") Page<Product> page, @Param("query") ProductBo query);
|
||||||
|
|
||||||
|
@Update("UPDATE pms_product SET sales = sales + #{quantity} WHERE id = #{productId}")
|
||||||
|
void updateSales(@Param("productId") Long productId, @Param("quantity") Integer quantity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -19,4 +19,6 @@ public interface OrderItemService extends IService<OrderItem> {
|
|||||||
MerchantOrderVO getMerchantOrder(Long orderItemId);
|
MerchantOrderVO getMerchantOrder(Long orderItemId);
|
||||||
|
|
||||||
MerchantOrderVO getMerchantOrder(String code);
|
MerchantOrderVO getMerchantOrder(String code);
|
||||||
|
|
||||||
|
void addSaleNum(Long orderId);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.wzj.soopin.order.service.impl;
|
|||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.wzj.soopin.goods.mapper.ProductMapper;
|
||||||
import com.wzj.soopin.order.domain.entity.OrderItem;
|
import com.wzj.soopin.order.domain.entity.OrderItem;
|
||||||
import com.wzj.soopin.order.domain.vo.MerchantOrderVO;
|
import com.wzj.soopin.order.domain.vo.MerchantOrderVO;
|
||||||
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
import com.wzj.soopin.order.mapper.OrderItemMapper;
|
||||||
@ -23,7 +24,6 @@ import java.util.concurrent.TimeUnit;
|
|||||||
/**
|
/**
|
||||||
* 订单中所包含的商品Service业务层处理
|
* 订单中所包含的商品Service业务层处理
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @author zcc
|
* @author zcc
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ -32,6 +32,9 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RedisCache redisCache;
|
private RedisCache redisCache;
|
||||||
|
@Autowired
|
||||||
|
private ProductMapper productMapper;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<OrderItem> findByOrderId(Long orderId) {
|
public List<OrderItem> findByOrderId(Long orderId) {
|
||||||
@ -78,6 +81,12 @@ public class OrderItemServiceImpl extends ServiceImpl<OrderItemMapper, OrderItem
|
|||||||
public MerchantOrderVO getMerchantOrder(String code) {
|
public MerchantOrderVO getMerchantOrder(String code) {
|
||||||
String tenantId = TenantHelper.getTenantId();
|
String tenantId = TenantHelper.getTenantId();
|
||||||
Assert.notEmpty(tenantId, () -> ServiceException.of("您无权查看商户订单"));
|
Assert.notEmpty(tenantId, () -> ServiceException.of("您无权查看商户订单"));
|
||||||
return baseMapper.selectMerchatOrder(tenantId,null, code);
|
return baseMapper.selectMerchatOrder(tenantId, null, code);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addSaleNum(Long orderId) {
|
||||||
|
List<OrderItem> orderItems = findByOrderId(orderId);
|
||||||
|
orderItems.forEach(orderItem -> productMapper.updateSales(orderItem.getProductId(), orderItem.getQuantity()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,6 +98,8 @@ public class OrderCashier implements CashierExecute {
|
|||||||
log.info("订单{}支付成功,金额{},方式{}", payParam.getSn(),
|
log.info("订单{}支付成功,金额{},方式{}", payParam.getSn(),
|
||||||
paymentSuccessParams.getPaymentMethod(),
|
paymentSuccessParams.getPaymentMethod(),
|
||||||
paymentSuccessParams.getReceivableNo());
|
paymentSuccessParams.getReceivableNo());
|
||||||
|
// 订单内商品已售数量增加
|
||||||
|
orderItemService.addSaleNum(Long.valueOf(payParam.getSn()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user