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