KKSU
2023-12-21 c9289c6477ea92fce66d191b4b2a41a9bad22b05
富文本框输入版本变化
16 files modified
6 files added
506 ■■■■■ changed files
src/main/java/cc/mrbird/febs/common/utils/AppContants.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/ApiMallAppController.java 33 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderDto.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiAddOrderItemDto.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java 14 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java 19 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java 1 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallOrderItem.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallMemberWalletMapper.java 4 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderInfoMapper.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/mapper/MallOrderItemMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallAppService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallAppServiceImpl.java 224 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiMallAppMemberInfoVo.java 3 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallAppMemberMapper.xml 1 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallMemberWalletMapper.xml 10 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallOrderInfoMapper.xml 53 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/modules/MallOrderItemMapper.xml 16 ●●●●● patch | view | raw | blame | history
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";
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);
    }
}
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;
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;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiGetOrderListDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiNormalInsureDto.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/dto/ApiRegistAppOrderDto.java
New file
@@ -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;
}
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-主动取消
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;
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);
}
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);
}
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);
}
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);
}
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) {
src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderListVo.java
New file
@@ -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;
}
src/main/java/cc/mrbird/febs/mall/vo/ApiGetOrderOrderItemVo.java
New file
@@ -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;
}
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;
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,
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>
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>
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>