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