MrShi
2026-03-06 e53f386fd0e55bc27925898b67a24658846be49b
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dingyuannongji
已删除3个文件
已修改12个文件
151 ■■■■ 文件已修改
admin/dmmall_admin/index.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/dmmall_admin/static/css/app.51bd40d6.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/dmmall_admin/static/js/app.17ff12aa.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/dmmall_admin/static/js/app.17ff12aa.js.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaInformationWindow.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaOrderRefundWindow.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShopInfoWindow.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/platformGoods.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/dmmall_admin/index.html
@@ -1 +1 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>鼎元农机后台管理</title><link href="static/css/app.51bd40d6.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.17ff12aa.js" rel="preload" as="script"><link href="static/js/chunk-vendors.22d73e08.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.51bd40d6.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but é¼Žå…ƒå†œæœºåŽå°ç®¡ç† doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.22d73e08.js"></script><script src="static/js/app.17ff12aa.js"></script></body></html>
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>鼎元农机后台管理</title><link href="static/css/app.420cab1e.css" rel="preload" as="style"><link href="static/css/chunk-vendors.d9e68312.css" rel="preload" as="style"><link href="static/js/app.93385205.js" rel="preload" as="script"><link href="static/js/chunk-vendors.22d73e08.js" rel="preload" as="script"><link href="static/css/chunk-vendors.d9e68312.css" rel="stylesheet"><link href="static/css/app.420cab1e.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but é¼Žå…ƒå†œæœºåŽå°ç®¡ç† doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="static/js/chunk-vendors.22d73e08.js"></script><script src="static/js/app.93385205.js"></script></body></html>
admin/dmmall_admin/static/css/app.51bd40d6.css
ÎļþÒÑɾ³ý
admin/dmmall_admin/static/js/app.17ff12aa.js
ÎļþÒÑɾ³ý
admin/dmmall_admin/static/js/app.17ff12aa.js.map
ÎļþÒÑɾ³ý
admin/src/components/business/OperaInformationWindow.vue
@@ -1,6 +1,5 @@
<template>
  <GlobalWindow
      width="80%"
    :title="title"
    :visible.sync="visible"
    v-loading="isUploading"
@@ -11,7 +10,7 @@
      <el-form-item label="标题" prop="name">
        <el-input v-model="form.name" placeholder="请输入标题" v-trim/>
      </el-form-item>
      <el-form-item label="主图" prop="imgurlfull">
      <el-form-item label="主图" prop="imgurl">
        <UploadAvatarImage
            :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl }"
            @uploadSuccess="uploadAvatarSuccess"
@@ -119,6 +118,26 @@
    },
    getWangedditor(val){
      this.form.content =val
    },
    open (title, target) {
      this.title = title
      this.visible = true
      this.form.imgurlfull=null
      this.form.imgurl=null
      // æ–°å»º
      if (target == null) {
        this.$nextTick(() => {
          this.$refs.form.resetFields()
          this.form[this.configData['field.id']] = null
        })
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
      })
    }
  }
}
@@ -126,43 +145,10 @@
<style lang="scss" scoped>
@import "@/assets/style/alertstyle.scss";
::v-deep .el-form-item__content {
  flex: 0.6;
}
::v-deep .el-select {
  width: 100%;
  .el-input__inner {
    width: 100%;
  }
}
$image-width: 100px;
.avatar-uploader {
  width: $image-width;
  height: $image-width;
}
::v-deep .el-upload {
  border: 1px dashed #d9d9d9;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  width: $image-width;
  height: $image-width;
  overflow: hidden;
}
.avatar-uploader .el-upload:hover {
  border-color: #409EFF;
}
.avatar-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: $image-width;
  height: $image-width;
  line-height: $image-width;
  text-align: center;
}
.avatar {
  width: $image-width;
  height: $image-width;
  display: block;
}
</style>
admin/src/components/business/OperaOrderRefundWindow.vue
@@ -53,31 +53,31 @@
        <div  class="header-b">退款内容</div>
        <div class="info-item"  >
          <el-form :model="form" ref="form" label-width="120px" label-suffix=":"  :rules="rules"  >
            <el-form-item label="退款金额" prop="money" style="display: block;">
            <el-form-item label="退款金额" prop="money"  >
              <el-input type="number"  v-model="form.money" placeholder="请输入退款金额" v-trim>  <template slot="append"> å…ƒ</template>  </el-input>
              <span class="tip-warn" style="margin-bottom: 30px;font-size: 14px;">   <i class="el-icon-warning"></i>
              æç¤ºï¼šå½“前订单最多可退金额为<span class="red">{{(info.price||0).toFixed(2)}}</span></span>
            </el-form-item>
            <div style="display:flex;">
              <el-form-item label="退还" prop="refundInfo"  style="display: inline;">
              <el-form-item label="退还" prop="refundInfo"   >
                <el-checkbox style="border: none;" v-model="form.returnUseCouponStatus" label="退还客户优惠券" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
              <el-form-item label="" prop="refundInfo"  >
                <el-checkbox style="border: none"  v-model="form.returnUseIntegralStatus" label="退还客户积分" border></el-checkbox>
              </el-form-item>
            </div>
            <div style="display:flex;">
              <el-form-item label="扣除" prop="refundInfo"  style="display: inline;">
              <el-form-item label="扣除" prop="refundInfo"  >
                <el-checkbox style="border: none"  v-model="form.returnShopSettlementStatus" label="扣除经销商已结算金额" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
              <el-form-item label="" prop="refundInfo"   >
                <el-checkbox style="border: none"  v-model="form.returnIntegralStatus" label="扣除已返客户积分" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
              <el-form-item label="" prop="refundInfo" >
                <el-checkbox style="border: none"  v-model="form.returnShopIntegralStatus" label="扣除已返经销商积分" border></el-checkbox>
              </el-form-item>
            </div>
            <el-form-item label="备注" prop="remark"  style="display: block;">
            <el-form-item label="备注" prop="remark"   >
              <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" style="width: 500px;" v-model="form.remark" placeholder="请输入取消说明"  v-trim/>
            </el-form-item>
          </el-form>
admin/src/components/business/OperaShopInfoWindow.vue
@@ -126,6 +126,7 @@
              <el-option   :key="2" :value="2" label="待收货"  ></el-option>
              <el-option   :key="3" :value="3" label="交易完成"  ></el-option>
              <el-option   :key="4" :value="4" label="已关闭"  ></el-option>
              <el-option   :key="6" :value="6" label="已退款"  ></el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="" prop="receiveType" style="display: inline-block;margin-right: 20px;">
@@ -183,7 +184,7 @@
            >
              <el-table-column prop="code" label="订单编号"  fixed align="center" min-width="120px" show-overflow-tooltip>
                <template slot-scope="{row}">
                <span    style="color: #216EEE; "   @click="$refs.operaGoodsOrderDetail.open('订单详情', row, 'first')">{{row.code}}</span>
                <span    style="color: #216EEE;cursor: pointer; "   @click="$refs.operaGoodsOrderDetail.open('订单详情', row, 'first')">{{row.code}}</span>
                </template>
              </el-table-column>
@@ -198,7 +199,7 @@
              </el-table-column>
              <el-table-column prop="price" label="商品总价(元)" align="center" min-width="100px">
                <template slot-scope="{row}">
                   {{(row.totalPrice || 0) - (row.mailPrice||0)}}
                   {{((row.totalPrice || 0) - (row.mailPrice||0)).toFixed(2)}}
                </template>
              </el-table-column>
              <el-table-column prop="mailPrice" label="运费(元)" align="center" min-width="100px"></el-table-column>
admin/src/views/business/platformGoods.vue
@@ -90,8 +90,8 @@
        </el-table-column>
        <el-table-column prop="categoryName" label="所属分类" min-width="120px"></el-table-column>
        <el-table-column prop="brandName" label="所属品牌" min-width="120px"></el-table-column>
        <el-table-column prop="showPrice" label="出厂价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="划线价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="price" label="出厂价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="showPrice" label="划线价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="skuPrice" label="销售价(元)" min-width="100px"></el-table-column>
        <el-table-column prop="shopPrice" label="供货价设置" min-width="100px" align="center">
          <template slot-scope="{row}" >
admin/src/views/index.vue
@@ -66,7 +66,7 @@
              <el-table-column prop="sortnum" label="排名"  align="center">
                <template slot-scope="scope">{{scope.$index +1}}</template>
              </el-table-column>
              <el-table-column prop="name" label="经销商名称"   align="center" >  </el-table-column>
              <el-table-column prop="name" label="经销商名称"  show-overflow-tooltip align="center" >  </el-table-column>
              <el-table-column prop="num" label="订单量"   align="center" >  </el-table-column>
              <el-table-column prop="price" label="销售额(元)" align="center" ></el-table-column>
              <el-table-column prop="num1" label="会员数" align="center"  ></el-table-column>
@@ -87,7 +87,7 @@
              <el-table-column prop="sortnum" label="排名"   align="center">
                <template slot-scope="scope">{{scope.$index +1}}</template>
              </el-table-column>
              <el-table-column prop="name" label="商品名称"   align="center" >  </el-table-column>
              <el-table-column prop="name" label="商品名称" show-overflow-tooltip  align="center" >  </el-table-column>
              <el-table-column prop="num" label="销量"   align="center" >  </el-table-column>
              <el-table-column prop="price" label="销售额(元)" align="center"  ></el-table-column>
            </el-table>
server/dmmall_service/src/main/java/com/doumee/service/business/impl/AftersaleServiceImpl.java
@@ -1050,7 +1050,7 @@
        aftersale.setCode(getNextInCode());
        //订单退回返回给经销商的积分
        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnCustomerIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
        if(Objects.nonNull(goodsorder.getDistributionShopId())){
            Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
            //经销商存在剩余积分
            if(Objects.nonNull(shop)&&shop.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -1072,7 +1072,7 @@
        }
        //订单退回 ç»é”€å•†ç»“算余额
        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getShopSettlement().compareTo(BigDecimal.ZERO)>Constants.ZERO){
        if(Objects.nonNull(goodsorder.getDistributionShopId())){
            Shop shop = shopMapper.selectById(goodsorder.getDistributionShopId());
            //经销商存在剩余积分
            if(Objects.nonNull(shop)&&shop.getAmount().compareTo(BigDecimal.ZERO)>Constants.ZERO){
@@ -1095,7 +1095,7 @@
        }
        //订单退回 è¿”还给客户的积分
        if(Objects.nonNull(goodsorder.getDistributionShopId())&&goodsorder.getReturnMemberIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
        if(Objects.nonNull(goodsorder.getDistributionShopId())){
            Member member = memberMapper.selectById(goodsorder.getMemberId());
            //客户存在剩余积分
            if(Objects.nonNull(member)&&member.getIntegral().compareTo(BigDecimal.ZERO)>Constants.ZERO){
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -973,6 +973,7 @@
        MPJLambdaWrapper<Goods> wrapper = new MPJLambdaWrapper<Goods>()
                .selectAll(Goods.class)
                .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getMinPrice)
                .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getLinePrice)
                .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
                .eq(Goods::getIsdeleted,Constants.ZERO)
                .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -1062,7 +1063,6 @@
        //真实销量 = realSaleNum  - saleNum;
        //真实库存= sumStock - (realSaleNum  - saleNum)
        goodsResponse.setStock(sumStock);
        goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock);
        goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
        //Sku基础信息
        List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -857,12 +857,14 @@
            if(!Constants.equalsInteger(goods.getStatus(),Constants.ZERO)||!Constants.equalsInteger(goods.getIsdeleted(),Constants.ZERO)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品已删除或已下架,无法下单");
            }
            if(Objects.nonNull(goodsSku.getStock())){
            if(goodsSku.getStock().compareTo(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum())))<Constants.ZERO){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在商品库存不足,无法下单!");
            }
            //商品库存扣除
            goodsSku.setStock(goodsSku.getStock().subtract(new BigDecimal(Constants.formatIntegerNum(payDetailRequest.getGoodsNum()))));
            goodsSkuMapper.updateById(goodsSku);
            }
            GoodsorderDetail goodsOrderDetail = new GoodsorderDetail();
            goodsOrderDetail.setCreator(member.getId());
            goodsOrderDetail.setCreateDate(new Date());
@@ -1443,6 +1445,7 @@
        orderPayConfirmResponse.setCouponAmount(couponAmount);
        //获取可以使用的优惠券
        List<MemberCoupon> memberCouponList = memberCouponService.getApplyCoupon(request.getPayDetailRequestList(),request.getMemberId());
        if(CollectionUtils.isNotEmpty(memberCouponList)){
            orderPayConfirmResponse.setMemberCouponList(memberCouponList);
            if(Objects.nonNull(request.getCouponId())&&Constants.equalsInteger(request.getCouponId(),-Constants.ONE)&&Objects.nonNull(memberCouponList)){
@@ -1456,11 +1459,11 @@
                }
                memberCoupon = memberCoupons.get(Constants.ZERO);
                couponAmount = memberCoupon.getValidAmount();
                memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
//                memberCouponService.calculateCouponRata(memberCoupon,goodsCalculateList,amount);
                orderPayConfirmResponse.setMemberCoupon(memberCoupon);
            }
        }else {
            if(Objects.nonNull(request.getCouponId())){
            if(Objects.nonNull(request.getCouponId())&&!Constants.equalsInteger(request.getCouponId(),-Constants.ONE)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"无可用优惠券,请刷新查看");
            }
        }
@@ -1533,7 +1536,7 @@
            orderPayConfirmResponse.setIntegralAmount(integralAmount);
        }
        //使用优惠券 å‡åŽ»ä¼˜æƒ åˆ¸æŠµæ‰£é‡‘é¢
        if(Objects.nonNull(request.getCouponId())){
        if(Objects.nonNull(orderPayConfirmResponse.getMemberCoupon())){
            orderPayConfirmResponse.setCouponAmount(couponAmount);
        }
        //实际支付金额 å‡åŽ»ä¼˜æƒ åˆ¸ã€ç§¯åˆ†æŠµæ‰£é‡‘é¢
@@ -2285,6 +2288,7 @@
        List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                .eq(Goodsorder::getReceiveType,Constants.ONE)
                .isNotNull(Goodsorder::getExchangeCode)
                .in(Goodsorder::getStatus,Constants.OrderStatus.WAIT_RECEIVE.getKey(),
                Constants.OrderStatus.WAIT_PAY.getKey(),
                Constants.OrderStatus.PAY_DONE.getKey())
@@ -2325,7 +2329,7 @@
        List<Goodsorder> goodsorderList = goodsorderMapper.selectList(new QueryWrapper<Goodsorder>().lambda()
                .eq(Goodsorder::getIsdeleted, Constants.ZERO)
                .eq(Goodsorder::getStatus, Constants.OrderStatus.WAIT_PAY.getKey())
                .ge(Goodsorder::getCreateDate, "DATE_SUB(NOW(), INTERVAL 15 MINUTE)")
                        .apply(" CREATE_DATE >  DATE_SUB(NOW(), INTERVAL 15 MINUTE) ")
        );
        if(CollectionUtils.isNotEmpty(goodsorderList)){
            for (Goodsorder goodsorder:goodsorderList) {
server/dmmall_service/src/main/java/com/doumee/service/business/impl/MemberCouponServiceImpl.java
@@ -594,9 +594,13 @@
        if(CollectionUtils.isNotEmpty(allCoupon)){
            for (MemberCoupon memberCoupon:allCoupon) {
                //适用类型:0=全场;1=品类;2=指定商品
                if(this.calculateCouponRata(memberCoupon,goodsCalculateList,totalAmount).compareTo(memberCoupon.getPrice())<=Constants.ZERO){
                    continue;
                }
                memberCouponList.add(memberCoupon);
                /*//适用类型:0=全场;1=品类;2=指定商品
                 if(Constants.equalsInteger(memberCoupon.getApplyType(),Constants.ZERO)){
                     memberCoupon.setValidAmount(memberCoupon.getPrice());
                     memberCoupon.setValidAmount(memberCoupon.getMaxPrice());
                     memberCouponList.add(memberCoupon);
                 }else{
                     List<String> applyIdList = Arrays.asList(memberCoupon.getApplyIds().split(","));
@@ -604,13 +608,13 @@
                     isVaildUse(applyIdList,goodsCalculateList,memberCoupon.getApplyType());
                     BigDecimal skuAmount = goodsCalculateList.stream().filter(i->i.getUseCoupon()).map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
                     if(skuAmount.compareTo(memberCoupon.getLimitPrice())>=Constants.ZERO){
                         //根据金额计算实际折扣金额
                         BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("100"),2, RoundingMode.HALF_UP);
                         //根据金额计算实际折扣金额  PRICE å­˜å‚¨æŠ˜æ‰£å€¼  ä¾‹å¦‚ 5折 å­˜å‚¨å€¼ 5
                         BigDecimal couponPrice = skuAmount.multiply(memberCoupon.getPrice()).divide(new BigDecimal("10"),2, RoundingMode.HALF_UP);
                         //折扣金额大于最大可折扣金额  åˆ™ä½¿ç”¨æœ€å¤§å¯æŠ˜æ‰£é‡‘额
                         memberCoupon.setValidAmount(couponPrice.compareTo(memberCoupon.getMaxPrice())>Constants.ZERO?memberCoupon.getMaxPrice():couponPrice);
                         memberCouponList.add(memberCoupon);
                     }
                 }
                 }*/
            }
        }
        // ä½¿ç”¨ Stream æŽ’序  reversed() è¡¨ç¤ºå€’序
@@ -683,14 +687,15 @@
    /**
     * è®¡ç®—当前已选择优惠券每个商品占比金额
     * è®¡ç®—优惠券每个商品占比金额
     * @param coupon ä¼˜æƒ åˆ¸ä¿¡æ¯
     * @param goodsCalculateList å•†å“é›†åˆ
     * @param totalAmount è®¢å•总金额
     * @return å¯ä»¥ä½¿ç”¨ä¼˜æƒ åˆ¸çš„商品总金额
     */
    public void  calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){
    public BigDecimal calculateCouponRata(MemberCoupon coupon,List<OrderGoodsCalculateResponse> goodsCalculateList,BigDecimal totalAmount){
        //总余额
        BigDecimal validAmount = coupon.getValidAmount();
        BigDecimal validAmount = coupon.getMaxPrice();
        //剩余可分配金额
        BigDecimal surplusValidAmount = validAmount;
        //已用占比比例值
@@ -699,12 +704,22 @@
        if(!Constants.equalsInteger(coupon.getApplyType(),Constants.ZERO)){
            List<String> applyIdList = Arrays.asList(coupon.getApplyIds().split(","));
            isVaildUse(applyIdList,goodsCalculateList,coupon.getApplyType());
                    //Constants.equalsInteger(coupon.getApplyType(),Constants.ONE)?Constants.ONE:Constants.ZERO);
        }else{
            isVaildUse(null,goodsCalculateList,coupon.getApplyType());
        }
        //使用了优惠券的商品数量
        Integer countCouponNum = goodsCalculateList.stream().filter(i->i.getUseCoupon()).collect(Collectors.toList()).size();
        //使用优惠券的总金额
        BigDecimal useCouponPrice = goodsCalculateList.stream().filter(i->i.getUseCoupon())
                .map(i->i.getSkuAmount()).reduce(BigDecimal.ZERO,BigDecimal::add);
        if(Constants.equalsInteger(coupon.getCouponType(),Constants.ONE)){
            //最大可优惠金额
            BigDecimal couponAmount = useCouponPrice.multiply(coupon.getPrice()).divide(new BigDecimal("10"),2,BigDecimal.ROUND_DOWN);
            if(couponAmount.compareTo(validAmount)<=Constants.ZERO){
                validAmount = couponAmount;
                surplusValidAmount = validAmount;
            }
        }
        Integer useCouponNum = Constants.ZERO;
        for (int i = 0; i < goodsCalculateList.size(); i++) {
            if(!goodsCalculateList.get(i).getUseCoupon()){
@@ -714,6 +729,7 @@
            if(Constants.equalsInteger(useCouponNum+1,countCouponNum)){
                goodsCalculateList.get(i).setOrderCouponRata(new BigDecimal("1").subtract(rata));
                goodsCalculateList.get(i).setCouponDeductCash(surplusValidAmount);
                surplusValidAmount = BigDecimal.ZERO;
                break;
            }
            goodsCalculateList.get(i).setOrderCouponRata(goodsCalculateList.get(i).getSkuAmount().divide(totalAmount,2,BigDecimal.ROUND_DOWN));
@@ -722,6 +738,8 @@
            rata = rata.add(goodsCalculateList.get(i).getOrderCouponRata());
            useCouponNum = useCouponNum + 1;
        }
        coupon.setValidAmount(validAmount.subtract(surplusValidAmount));
        return useCouponPrice;
    }
server/dmmall_service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -724,9 +724,7 @@
        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.SHOP_FILE).getCode();
        for(Shop model:shopList){
            model.setImgFullUrl(StringUtils.isNotBlank(model.getImgurl())?path+model.getImgurl():null);
        }
        return shopList;
    }
server/dmmall_service/src/main/java/com/doumee/service/business/impl/UserActionServiceImpl.java
@@ -85,9 +85,9 @@
                                         String before,
                                         String after) {
        String info = type.getInfo();
        if(params!=null){
        if(params!=null&&info!= null){
            for (int i = 0; i < params.length; i++) {
                info = info.replace("${param"+(i+1)+"}",params[i]);
                info = info.replace("${param"+(i+1)+"}",StringUtils.defaultString(params[i],""));
            }
        }
        UserAction userAction=new UserAction();