From c9289c6477ea92fce66d191b4b2a41a9bad22b05 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 21 Dec 2023 10:57:18 +0800 Subject: [PATCH] 富文本框输入版本变化 --- src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java | 20 ++ src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java | 10 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java | 224 +++++++++++++++++++++++- src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java | 7 src/main/resources/mapper/modules/MallAppMemberMapper.xml | 1 src/main/resources/mapper/modules/MallOrderItemMapper.xml | 16 + src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java | 4 src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java | 15 + src/main/resources/mapper/modules/MallOrderInfoMapper.xml | 53 ++++- src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java | 33 +++ src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java | 3 src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java | 34 +++ src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java | 2 src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java | 3 src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java | 23 ++ src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java | 3 src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 3 src/main/resources/mapper/modules/MallMemberWalletMapper.xml | 10 + src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java | 19 ++ src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java | 14 + src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java | 1 src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java | 8 22 files changed, 471 insertions(+), 35 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java index 07f5e07..0d391d5 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java @@ -23,6 +23,9 @@ */ public static final Integer IS_APP_CATEGORY = 1; public static final Integer IS_APP_GOODS = 1; + public static final Integer IS_APP_ORDER = 1; + public static final Integer INSURE_ORDER_NORMAL = 1;//普通结算 + public static final Integer INSURE_ORDER_MEMBER = 2;//会员结算 public static final String XCX_LOGIN_PREFIX = "xcx_"; public static final String XCX_LOGIN_PHONE_PREFIX = "xcx_p"; diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java index 2049bfc..3c60150 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java @@ -50,9 +50,40 @@ return mallAppService.findMallGoodsListNoPage(queryDto); } - @ApiOperation(value = "创建订单", notes = "创建订单") + @ApiOperation(value = "会员结算", notes = "会员结算") @PostMapping(value = "/createAppOrder") public FebsResponse createAppOrder(@RequestBody ApiAddOrderDto addOrderDto) { return mallAppService.createAppOrder(addOrderDto); } + + @ApiOperation(value = "普通结算", notes = "普通结算") + @PostMapping(value = "/normalInsure") + public FebsResponse normalInsure(@RequestBody ApiNormalInsureDto normalInsureDto) { + return mallAppService.normalInsure(normalInsureDto); + } + + @ApiOperation(value = "挂单", notes = "挂单") + @PostMapping(value = "/registAppOrder") + public FebsResponse registAppOrder(@RequestBody ApiRegistAppOrderDto registAppOrderDto) { + return mallAppService.registAppOrder(registAppOrderDto); + } + + @ApiOperation(value = "取单列表", notes = "取单列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiGetOrderListVo.class) + }) + @PostMapping(value = "/getOrderList") + public FebsResponse getOrderList(@RequestBody ApiGetOrderListDto orderListDto) { + return mallAppService.getOrderList(orderListDto); + } + + @ApiOperation(value = "取单", notes = "取单") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiGetOrderListVo.class) + }) + @PostMapping(value = "/getOrder") + public FebsResponse getOrder(@RequestBody ApiGetOrderDto apiGetOrderDto) { + return mallAppService.getOrder(apiGetOrderDto); + } + } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java index 3d6b21a..0d85159 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java @@ -13,6 +13,9 @@ @ApiModelProperty(value = "订单结算方式 1:普通结算 2:会员结算", example = "1") private Integer type; + @ApiModelProperty(value = "会员ID", example = "1") + private Long memberId; + @ApiModelProperty(value = "商品明细") private List<ApiAddOrderItemDto> items; diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java index f85b652..3fe84c4 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java @@ -5,17 +5,18 @@ import lombok.Data; import javax.validation.constraints.NotNull; +import java.math.BigDecimal; @Data @ApiModel(value = "ApiAddOrderItemDto", description = "新增订单明细参数接收类") public class ApiAddOrderItemDto { @NotNull(message = "参数不能为空") - @ApiModelProperty(value = "skuID", example = "1") - private Long skuId; + @ApiModelProperty(value = "商品id", example = "1") + private Long id; @NotNull(message = "参数不能为空") @ApiModelProperty(value = "数量", example = "2") - private Integer cnt; + private BigDecimal cnt; } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java new file mode 100644 index 0000000..0801453 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java @@ -0,0 +1,14 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiGetOrderDto", description = "参数接收类") +public class ApiGetOrderDto { + + @ApiModelProperty(value = "订单ID", example = "10") + private Long orderId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java new file mode 100644 index 0000000..2125893 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiGetOrderListDto", description = "参数接收类") +public class ApiGetOrderListDto { + + @ApiModelProperty(value = "一页数量", example = "10") + private Integer pageSize; + + @ApiModelProperty(value = "第几页", example = "1") + private Integer pageNum; + + @ApiModelProperty(hidden = true) + private Integer status; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java new file mode 100644 index 0000000..52cea45 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "ApiNormalInsureDto", description = "新增订单接口参数接收类") +public class ApiNormalInsureDto { + + @ApiModelProperty(value = "订单结算方式 1:普通结算 2:会员结算", example = "1") + private Integer type; + + @ApiModelProperty(value = "商品明细") + private List<ApiAddOrderItemDto> items; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java new file mode 100644 index 0000000..57352a9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel(value = "ApiRegistAppOrderDto", description = "新增订单接口参数接收类") +public class ApiRegistAppOrderDto { + + @ApiModelProperty(value = "商品明细") + private List<ApiAddOrderItemDto> items; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java index cef66a2..6074666 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java @@ -38,6 +38,7 @@ * 状态 1-待支付2-待发货3-待收货4-已完成5-退款中6-已退款7-已取消 */ private Integer status; + private Integer isApp; /** * 取消类型 1-超时未支付2-主动取消 diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java index c162af5..2179a34 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java @@ -35,6 +35,8 @@ private BigDecimal amount; + private BigDecimal appCnt; + private BigDecimal costPrice; private Integer isNormal; diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java index 3473eab..bebeee2 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java @@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.math.BigDecimal; + public interface MallMemberWalletMapper extends BaseMapper<MallMemberWallet> { MallMemberWallet selectWalletByMemberId(@Param("memberId") Long memberId); @@ -15,4 +17,6 @@ int updateAmountWithVersion(@Param("record") MallMemberWallet wallet); void updateBalanceWithId(@Param("record")MallMemberWallet mallMemberWallet); + + void updateBalanceScoreWithId(@Param("record")MallMemberWallet mallMemberWallet); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java index 0d655f4..f12b9b9 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java @@ -1,14 +1,12 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.common.enumerates.OrderPayMethodEnum; +import cc.mrbird.febs.mall.dto.ApiGetOrderListDto; import cc.mrbird.febs.mall.dto.MallOrderInfoDto; import cc.mrbird.febs.mall.dto.OrderListDto; import cc.mrbird.febs.mall.entity.MallOrderInfo; import cc.mrbird.febs.mall.entity.MallOrderItem; -import cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo; -import cc.mrbird.febs.mall.vo.AdminMallOrderInfoVo; -import cc.mrbird.febs.mall.vo.AdminMallOrderVo; -import cc.mrbird.febs.mall.vo.AdminOrderDetailVo; +import cc.mrbird.febs.mall.vo.*; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -79,4 +77,8 @@ MallOrderInfo selectAllOrderInfoByIdAndTakeUniqueCode(@Param("orderId")long orderId,@Param("takeUniqueCode") String takeUniqueCode); IPage<AdminGoodsStatisticsVo> getGoodsStatisticsInPage(Page<AdminGoodsStatisticsVo> page, @Param("record") MallOrderItem mallOrderItem); + + IPage<ApiGetOrderListVo> getAppOrderListInPage(IPage<ApiGetOrderListVo> page, @Param("record")ApiGetOrderListDto orderListDto); + + ApiGetOrderListVo getAppOrderByOrderId(@Param("orderId")Long orderId); } diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java index 28ac651..b6f00b7 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.mapper; import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.vo.ApiGetOrderOrderItemVo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; @@ -15,4 +16,6 @@ void updateStateByOrderId(@Param("state")Integer i, @Param("orderId")Long id); List<MallOrderItem> selectListByOrderId(@Param("orderId")Long id); + + List<ApiGetOrderOrderItemVo> getAppOrderItemByOrderId(@Param("orderId")Long id); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java index a2d3219..2d44c33 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java @@ -16,4 +16,12 @@ FebsResponse findMallGoodsListNoPage(ApiMallGoodsQueryDto queryDto); FebsResponse createAppOrder(ApiAddOrderDto addOrderDto); + + FebsResponse registAppOrder(ApiRegistAppOrderDto addOrderDto); + + FebsResponse normalInsure(ApiNormalInsureDto normalInsureDto); + + FebsResponse getOrderList(ApiGetOrderListDto orderListDto); + + FebsResponse getOrder(ApiGetOrderDto apiGetOrderDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java index c43e24b..6fc27d6 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java @@ -1,22 +1,19 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.common.utils.RedisUtils; +import cc.mrbird.febs.mall.conversion.MallOrderInfoConversion; import cc.mrbird.febs.mall.dto.*; -import cc.mrbird.febs.mall.entity.MallAppMember; -import cc.mrbird.febs.mall.entity.MallMember; -import cc.mrbird.febs.mall.mapper.MallAppMemberMapper; -import cc.mrbird.febs.mall.mapper.MallGoodsCategoryMapper; -import cc.mrbird.febs.mall.mapper.MallGoodsMapper; -import cc.mrbird.febs.mall.mapper.MallMemberMapper; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallAppService; -import cc.mrbird.febs.mall.vo.ApiMallAppMemberInfoVo; -import cc.mrbird.febs.mall.vo.ApiMallGoodsListVo; -import cc.mrbird.febs.mall.vo.MallGoodsCategoryVo; -import cc.mrbird.febs.mall.vo.MallGoodsListVo; +import cc.mrbird.febs.mall.vo.*; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -24,11 +21,16 @@ import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -42,7 +44,13 @@ private final MallMemberMapper mallMemberMapper; private final MallGoodsCategoryMapper mallGoodsCategoryMapper; private final MallGoodsMapper mallGoodsMapper; + private final MallOrderInfoMapper mallOrderInfoMapper; + private final MallOrderItemMapper mallOrderItemMapper; + private final MallMemberWalletMapper mallMemberWalletMapper; + public static void main(String[] args) { + System.out.println(SecureUtil.md5("a123456")); + } @Override public FebsResponse appToLogin(LoginDto loginDto) { String md5Pwd = SecureUtil.md5(loginDto.getPassword()); @@ -90,10 +98,202 @@ } @Override + @Transactional public FebsResponse createAppOrder(ApiAddOrderDto addOrderDto) { + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(addOrderDto.getMemberId()); + if (ObjectUtil.isEmpty(mallMemberWallet)) { + throw new FebsException("用户钱包不存在。"); + } + if (CollUtil.isEmpty(addOrderDto.getItems())) { + throw new FebsException("商品明细不能为空。"); + } + Integer type = addOrderDto.getType(); + String orderNo = MallUtils.getOrderNum(); + MallOrderInfo orderInfo = new MallOrderInfo(); + orderInfo.setOrderNo(orderNo); + orderInfo.setIsApp(AppContants.IS_APP_ORDER); + orderInfo.setOrderTime(new Date()); + orderInfo.setMemberId(addOrderDto.getMemberId()); + //会员结算 + orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); + mallOrderInfoMapper.insert(orderInfo); + BigDecimal total = BigDecimal.ZERO;//总支付金额 + //订单子表记录 + for (ApiAddOrderItemDto item : addOrderDto.getItems()) { + MallOrderItem orderItem = new MallOrderItem(); + MallGoods mallGoods = mallGoodsMapper.selectById(item.getId()); + //现价 + BigDecimal presentPrice = new BigDecimal(mallGoods.getPresentPrice()); + BigDecimal amount = presentPrice.multiply(item.getCnt()); + orderItem.setAmount(amount); + orderItem.setOrderId(orderInfo.getId()); + orderItem.setPrice(presentPrice); + orderItem.setAppCnt(item.getCnt()); + orderItem.setGoodsId(mallGoods.getId()); + orderItem.setGoodsName(mallGoods.getGoodsName()); + orderItem.setSkuImage(mallGoods.getThumb()); + orderItem.setState(1); -// return new FebsResponse().success().data(orderId).message("创建订单成功"); - return new FebsResponse().success().message("创建订单成功"); + total = total.add(amount); + mallOrderItemMapper.insert(orderItem); + } + orderInfo.setAmount(total); + orderInfo.setMemberId(mallMemberWallet.getMemberId()); + //折扣费用 + if(AppContants.INSURE_ORDER_MEMBER.equals(type)){ + BigDecimal score = mallMemberWallet.getScore();//积分 + BigDecimal balance = mallMemberWallet.getBalance();//余额 + + //这里将运费定义成折扣总金额 + /** + * 积分 + 余额 1:1来折扣支付金额 + */ + BigDecimal totalCarriage = BigDecimal.ZERO;//总折扣金额 + BigDecimal memberAmount = score.add(balance);//用户积分加余额总数 + if(memberAmount.compareTo(BigDecimal.ZERO) > 0){ + //折扣金额 + if(total.compareTo(memberAmount) >= 0){ + totalCarriage = memberAmount; + }else{ + totalCarriage = total; + } + //减少用户积分和余额 + + BigDecimal avaAmount = totalCarriage;//剩余需要折扣的金额 + if(avaAmount.compareTo(memberAmount) >= 0){ + //清零用户的积分和余额 + mallMemberWallet.setBalance(BigDecimal.ZERO); + mallMemberWallet.setScore(BigDecimal.ZERO); + mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet); + }else{ + /** + * 先扣积分,再扣余额 + */ + if(avaAmount.compareTo(score) >= 0){ + mallMemberWallet.setScore(BigDecimal.ZERO); + avaAmount = avaAmount.subtract(score); + }else{ + mallMemberWallet.setScore(score.subtract(avaAmount)); + avaAmount = BigDecimal.ZERO; + } + //积分不够 + if(avaAmount.compareTo(BigDecimal.ZERO) > 0){ + mallMemberWallet.setBalance(balance.subtract(avaAmount)); + }else{ + mallMemberWallet.setBalance(balance); + } + mallMemberWalletMapper.updateBalanceScoreWithId(mallMemberWallet); + } + } + orderInfo.setCarriage(totalCarriage); + } + mallOrderInfoMapper.updateById(orderInfo); + Map<String, Object> orderInfoMap = new HashMap<>(); + orderInfoMap.put("orderId", orderInfo.getId()); + orderInfoMap.put("totalAmount", orderInfo.getAmount()); + orderInfoMap.put("totalCarriage", orderInfo.getCarriage()); + return new FebsResponse().success().data(orderInfoMap); + } + + @Override + public FebsResponse registAppOrder(ApiRegistAppOrderDto addOrderDto) { + String orderNo = MallUtils.getOrderNum(); + MallOrderInfo orderInfo = new MallOrderInfo(); + orderInfo.setOrderNo(orderNo); + orderInfo.setIsApp(AppContants.IS_APP_ORDER); + orderInfo.setOrderTime(new Date()); + orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); + if (CollUtil.isEmpty(addOrderDto.getItems())) { + throw new FebsException("商品明细不能为空。"); + } + mallOrderInfoMapper.insert(orderInfo); + BigDecimal total = BigDecimal.ZERO;//总支付金额 + //订单子表记录 + for (ApiAddOrderItemDto item : addOrderDto.getItems()) { + MallOrderItem orderItem = new MallOrderItem(); + MallGoods mallGoods = mallGoodsMapper.selectById(item.getId()); + //现价 + BigDecimal presentPrice = new BigDecimal(mallGoods.getPresentPrice()); + BigDecimal amount = presentPrice.multiply(item.getCnt()); + orderItem.setAmount(amount); + orderItem.setOrderId(orderInfo.getId()); + orderItem.setPrice(presentPrice); + orderItem.setAppCnt(item.getCnt()); + orderItem.setGoodsId(mallGoods.getId()); + orderItem.setGoodsName(mallGoods.getGoodsName()); + orderItem.setSkuImage(mallGoods.getThumb()); + orderItem.setState(1); + mallOrderItemMapper.insert(orderItem); + + total = total.add(amount); + } + orderInfo.setAmount(total); + mallOrderInfoMapper.updateById(orderInfo); + return new FebsResponse().success().message("操作成功"); + } + + @Override + public FebsResponse normalInsure(ApiNormalInsureDto addOrderDto) { + String orderNo = MallUtils.getOrderNum(); + MallOrderInfo orderInfo = new MallOrderInfo(); + orderInfo.setOrderNo(orderNo); + orderInfo.setIsApp(AppContants.IS_APP_ORDER); + orderInfo.setOrderTime(new Date()); + orderInfo.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); + if (CollUtil.isEmpty(addOrderDto.getItems())) { + throw new FebsException("商品明细不能为空。"); + } + mallOrderInfoMapper.insert(orderInfo); + BigDecimal total = BigDecimal.ZERO;//总支付金额 + //订单子表记录 + for (ApiAddOrderItemDto item : addOrderDto.getItems()) { + MallOrderItem orderItem = new MallOrderItem(); + MallGoods mallGoods = mallGoodsMapper.selectById(item.getId()); + //现价 + BigDecimal presentPrice = new BigDecimal(mallGoods.getPresentPrice()); + BigDecimal amount = presentPrice.multiply(item.getCnt()); + orderItem.setAmount(amount); + orderItem.setOrderId(orderInfo.getId()); + orderItem.setPrice(presentPrice); + orderItem.setAppCnt(item.getCnt()); + orderItem.setGoodsId(mallGoods.getId()); + orderItem.setGoodsName(mallGoods.getGoodsName()); + orderItem.setSkuImage(mallGoods.getThumb()); + orderItem.setState(1); + + total = total.add(amount); + mallOrderItemMapper.insert(orderItem); + } + orderInfo.setCarriage(BigDecimal.ZERO);//折扣费用 + orderInfo.setAmount(total); + mallOrderInfoMapper.updateById(orderInfo); + Map<String, Object> orderInfoMap = new HashMap<>(); + orderInfoMap.put("orderId", orderInfo.getId()); + orderInfoMap.put("totalAmount", orderInfo.getAmount()); + orderInfoMap.put("totalCarriage", orderInfo.getCarriage()); + return new FebsResponse().success().data(orderInfoMap); + } + + @Override + public FebsResponse getOrderList(ApiGetOrderListDto orderListDto) { + IPage<ApiGetOrderListVo> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); + orderListDto.setStatus(OrderStatusEnum.WAIT_PAY.getValue()); + IPage<ApiGetOrderListVo> apiGetOrderListVos = mallOrderInfoMapper.getAppOrderListInPage(page, orderListDto); + if (CollUtil.isNotEmpty(apiGetOrderListVos.getRecords())) { + apiGetOrderListVos.getRecords().forEach(item -> { + item.setItems(mallOrderItemMapper.getAppOrderItemByOrderId(item.getId())); + }); + } + return new FebsResponse().success().data(apiGetOrderListVos); + } + + @Override + public FebsResponse getOrder(ApiGetOrderDto apiGetOrderDto) { + ApiGetOrderListVo apiGetOrderListVo = mallOrderInfoMapper.getAppOrderByOrderId(apiGetOrderDto.getOrderId()); + if(ObjectUtil.isNotEmpty(apiGetOrderListVo)){ + apiGetOrderListVo.setItems(mallOrderItemMapper.getAppOrderItemByOrderId(apiGetOrderListVo.getId())); + } + return new FebsResponse().success().data(apiGetOrderListVo); } public String generateAsaToken(String token) { diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java new file mode 100644 index 0000000..7fc6442 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java @@ -0,0 +1,23 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@ApiModel(value = "ApiGetOrderListVo", description = "信息返回类") +public class ApiGetOrderListVo { + + @ApiModelProperty(value = "订单ID") + private Long id; + + @ApiModelProperty(value = "订单总金额") + private BigDecimal amount; + + @ApiModelProperty(value = "订单明细") + private List<ApiGetOrderOrderItemVo> items; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java new file mode 100644 index 0000000..f01cb94 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java @@ -0,0 +1,34 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ApiGetOrderOrderItemVo", description = "信息返回类") +public class ApiGetOrderOrderItemVo { + + @ApiModelProperty(value = "商品ID") + private Long goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "主图") + private String skuImage; + + @ApiModelProperty(value = "单价") + private BigDecimal price; + + @ApiModelProperty(value = "数量") + private BigDecimal appCnt; + + @ApiModelProperty(value = "总价") + private BigDecimal amount; + + @ApiModelProperty(value = "1:按数量计价 2:按重量计价") + private String unit; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java index 0e07ceb..c7ce905 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java @@ -8,6 +8,9 @@ @ApiModel(value = "ApiMallAppMemberInfoVo", description = "返回参数类") public class ApiMallAppMemberInfoVo { + @ApiModelProperty(value = "会员ID") + private Long id; + @ApiModelProperty(value = "头像") private String avatar; diff --git a/src/main/resources/mapper/modules/MallAppMemberMapper.xml b/src/main/resources/mapper/modules/MallAppMemberMapper.xml index 4410182..3ddb95a 100644 --- a/src/main/resources/mapper/modules/MallAppMemberMapper.xml +++ b/src/main/resources/mapper/modules/MallAppMemberMapper.xml @@ -11,6 +11,7 @@ <select id="selectMemberInfoLikePhone" resultType="cc.mrbird.febs.mall.vo.ApiMallAppMemberInfoVo"> select + a.id id, a.avatar phone, a.name nickname, a.phone phone, diff --git a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml index eaa443b..a8fef0f 100644 --- a/src/main/resources/mapper/modules/MallMemberWalletMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberWalletMapper.xml @@ -44,4 +44,14 @@ </if> where id=#{record.id} and revision=#{record.revision} </update> + + + <update id="updateBalanceScoreWithId"> + update mall_member_wallet + set revision = revision + 1 , + balance = #{record.balance}, + score = #{record.score} + where id = #{record.id} + and revision = #{record.revision} + </update> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml index 3c4df5f..4bd5382 100644 --- a/src/main/resources/mapper/modules/MallOrderInfoMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderInfoMapper.xml @@ -468,19 +468,42 @@ </select> <select id="getGoodsStatisticsInPage" resultType="cc.mrbird.febs.mall.vo.AdminGoodsStatisticsVo"> - select - goods_name goodsName, - SUM(cnt) goodsCnt - from mall_order_item - <where> - <if test="record.orderIdsStr != null"> - and order_id in - <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=","> - #{id} - </foreach> - </if> - </where> - GROUP BY goods_id - ORDER BY goods_id desc -</select> + select + goods_name goodsName, + SUM(cnt) goodsCnt + from mall_order_item + <where> + <if test="record.orderIdsStr != null"> + and order_id in + <foreach collection="record.orderIdsStr" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + </where> + GROUP BY goods_id + ORDER BY goods_id desc + </select> + + <select id="getAppOrderListInPage" resultType="cc.mrbird.febs.mall.vo.ApiGetOrderListVo"> + select + a.id, + a.amount + from mall_order_info a + <where> + a.is_app = 1 + <if test="record.status != null"> + and a.status = #{record.status} + </if> + </where> + </select> + + <select id="getAppOrderByOrderId" resultType="cc.mrbird.febs.mall.vo.ApiGetOrderListVo"> + select + a.id, + a.amount + from mall_order_info a + where + a.is_app = 1 + and id = #{orderId} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallOrderItemMapper.xml b/src/main/resources/mapper/modules/MallOrderItemMapper.xml index 7cf7252..cf798f2 100644 --- a/src/main/resources/mapper/modules/MallOrderItemMapper.xml +++ b/src/main/resources/mapper/modules/MallOrderItemMapper.xml @@ -25,4 +25,20 @@ </select> + <select id="getAppOrderItemByOrderId" resultType="cc.mrbird.febs.mall.vo.ApiGetOrderOrderItemVo"> + select + a.goods_id, + a.goods_name, + a.sku_image, + a.price, + a.app_cnt, + a.amount, + b.unit + from mall_order_item a + left join mall_goods b on a.goods_id = b.id + where + a.order_id = #{orderId} + </select> + + </mapper> \ No newline at end of file -- Gitblit v1.9.1