rk
16 小时以前 511ce651667f5b2284247cc60599078b86f7963f
Merge remote-tracking branch 'origin/master'
已添加1个文件
已修改9个文件
370 ■■■■■ 文件已修改
admin/src/api/business/goodsorder.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaGoodsOrderDetail.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaOrderCancelWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaOrderRefundWindow.vue 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShipmentsWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/goodsorder.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/goodsorder.js
@@ -37,6 +37,9 @@
export function orderPlanCancelOrder (data) {
  return request.post('/business/goodsorder/orderPlanCancelOrder', data)
}
export function orderRefund (data) {
  return request.post('/business/goodsorder/orderRefund', data)
}
export function orderSendOutGoods (data) {
  return request.post('/business/goodsorder/orderSendOutGoods', data)
}
admin/src/components/business/OperaGoodsOrderDetail.vue
@@ -14,8 +14,8 @@
          <div  v-if="info.status ==4"   class="header-grey">已关闭</div>
          <div  v-if="info.status ==6"   class="header-grey">已退款</div>
          <div style="text-align: right;">
            <div class="header-red-btn" v-if="info.status == 0" @click="$refs.OperaOrderCancelWindow.open('取消订单', info)">取消订单</div>
            <div class="header-red-btn" v-if="info.status == 3" @click="$refs.OperaOrderCancelWindow.open('订单退款', info)">订单退款</div>
            <div class="header-red-btn" v-if="info.status == 0 || info.status == 1" @click="$refs.OperaOrderCancelWindow.open('取消订单', info)">取消订单</div>
            <div class="header-red-btn" v-if="info.status == 3" @click="$refs.OperaOrderRefundWindow.open('订单退款', info)">订单退款</div>
            <div class="header-blue-btn" @click="showChangeRecord">变更记录</div>
          </div>
      </div>
@@ -94,7 +94,7 @@
        </div>
        <div class="info-item"  >
          <div class="info-item-a">取消时间:<span >{{info.cancelDate}}</span></div>
          <div class="info-item-a">取消人员:<span>{{info.cancelUserName }}</span></div>
          <div class="info-item-a">取消人员:<span>{{info.cancelUser !=null?info.cancelUserName:'用户主动取消'}}</span></div>
          <div class="info-item-a">取消说明:<span>{{info.cancelInfo }}</span></div>
        </div>
        <div class="info-item"></div>
@@ -121,20 +121,47 @@
          <el-table-column prop="name" label="商品名称"   align="center" min-width="150px">  </el-table-column>
          <el-table-column prop="categoryName" label="商品分类"   align="center" min-width="150px">  </el-table-column>
          <el-table-column prop="goodsWeight" label="重量(kg)" align="center" min-width="150px"></el-table-column>
          <el-table-column prop="price" label="销售价(元)" align="center" min-width="100px"></el-table-column>
          <el-table-column prop="price" label="销售价(元)" align="center" min-width="100px">
            <template slot-scope="{row}">
              <span>ï¿¥{{(row.price || 0).toFixed(2)}}</span>
            </template>
          </el-table-column>
          <el-table-column prop="goodsNum" label="数量" align="center" min-width="150px"></el-table-column>
          <el-table-column prop="totalPrice" label="小计" align="center" min-width="150px"></el-table-column>
          <el-table-column prop="totalPrice" label="小计(元)" align="center" min-width="150px">
            <template slot-scope="{row}">
              <span class="orange">ï¿¥{{(row.totalPrice || 0).toFixed(2)}}</span>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="info-item"  >
        <div class="info-item-a">商品总价:<span> ï¿¥{{((info.totalPrice||0)-(info.mailPrice || 0)).toFixed(2)}}</span></div>
        <div class="info-item-a">快递费:<span>ï¿¥{{(info.mailPrice||0).toFixed(2)}}</span></div>
        <div class="info-item-a">订单总价:<span > ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div>
        <div class="info-item-a">订单总价:<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div>
      </div>
      <div class="info-item"  >
        <div class="info-item-a">优惠共减:<span> -ï¿¥{{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span>
          <span style="margin-left: 20px;" >
           <el-button  type="text" @click="showCouponPrice">查看</el-button>
          <span  v-if="((info.integral||0) + (info.couponPrice||0)).toFixed(2)>0">
            <el-popover
                style="margin-left: 20px;"
                placement="right-start"
                width="360px"
                @show="visible2=true"
                @hide="visible2=false"
                trigger="click" >
                <div style="margin-top: 10px;font-size: 12px;">
                  <div style="margin-bottom: 20px;font-weight: 600;"> ä¼˜æƒ å…±å‡ï¼š<span class="red"> -ï¿¥{{((info.integral||0) + (info.couponPrice||0)).toFixed(2) }}</span></div>
                  <div style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.integral||0)>0">
                    <span  style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span>
                    ç§¯åˆ†æŠµæ‰£ï¼š-ï¿¥{{(info.integral||0).toFixed(2) +'  '}}使用{{(info.useIntegral||0)}}积分抵扣¥{{(info.integral||0).toFixed(2) +'  '}}元
                  </div>
                  <div  style="margin-bottom: 10px;display: flex;align-items: baseline;" v-if="(info.couponPrice||0)>0">
                     <span  style="border-left: 3px solid red;font-size: 10px;margin-right: 10px;height: 10px;"></span>
                   {{' ä¼˜  æƒ   åˆ¸ '}}:{{'  '}}-ï¿¥{{(info.couponPrice||0).toFixed(2) +'  '}}使用{{info.couponName}}
                  </div>
                </div>
                <el-button  slot="reference"  type="text">{{visible2?'收起':'查看'}}</el-button>
              </el-popover>
        </span>
        </div>
      </div>
@@ -150,6 +177,7 @@
    <OperaChangeIntegralWindow ref="OperaChangeIntegralWindow" @success="successBiz"/>
    <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="successBiz"/>
    <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="successBiz"/>
    <OperaOrderRefundWindow ref="OperaOrderRefundWindow" @success="successBiz"/>
  </GlobalWindow>
</template>
@@ -161,13 +189,15 @@
import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow'
import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow'
import OperaShipmentsWindow from '@/components/business/OperaShipmentsWindow'
import OperaOrderRefundWindow from '@/components/business/OperaOrderRefundWindow'
export default {
  name: 'OperaShopGoodsWindow',
  extends: BaseOpera,
  components: { GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow,OperaOrderMarkWindow,OperaShipmentsWindow ,OperaOrderCancelWindow},
  components: { OperaOrderRefundWindow, GlobalWindow, OperaChangeOrderRecordWindow, OperaChangeIntegralWindow, OperaOrderMarkWindow, OperaShipmentsWindow, OperaOrderCancelWindow },
  data () {
    return {
      title: '',
      visible2: false,
      visible: false,
      tabelHeight: null,
      info: {},
@@ -192,7 +222,7 @@
      this.loadInfo()
      this.$emit('success')
    },
    showCouponPrice(){
    showCouponPrice () {
    },
    loadInfo () {
@@ -286,7 +316,7 @@
}
.info-item-a span{
  font-weight: 600;
  //font-weight: 500;
}
.info-item-a  .btn{
  font-size: 12px !important;
admin/src/components/business/OperaOrderCancelWindow.vue
@@ -7,7 +7,7 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" label-width="120px" label-suffix=":"  :rules="rules" inline>
      <p class="tip-warn" style="margin: 30px;">
      <p class="tip-warn" style="margin: 30px;font-size: 14px;">
        <i class="el-icon-warning"></i>
        æ“ä½œè¯´æ˜Žï¼šæ‚¨æ­£åœ¨å–消订单<span class="red">{{ form.code }} </span>,请谨慎操作!!</p>
      <el-form-item label="备注" prop="cancelInfo">
admin/src/components/business/OperaOrderRefundWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,249 @@
<template>
  <GlobalWindow
      :title="title"
      width="100%"
      :visible.sync="visible"
  >
    <div class="detail-box"  >
      <p class="tip-warn" style="margin-bottom: 30px;font-size: 14px;">
        <i class="el-icon-warning"></i>
        æ“ä½œè¯´æ˜Žï¼šæ‚¨æ­£é’ˆå¯¹è®¢å•<span class="red">{{ info.code }} </span>进行退款操作,该操作不可逆请谨慎操作!!</p>
      <div class="header">
        <div  class="header-b">商品信息</div>
      </div>
      <div class="info-item"  >
        <el-table  :data="info.goodsorderDetailList||[]"  stripe  border >
          <el-table-column prop="imgurl" label="商品图" min-width="80px" align="center">
            <template slot-scope="{row}">
              <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.imgurl" :preview-src-list="[row.imgurl]"></el-image>
            </template>
          </el-table-column>
          <el-table-column prop="name" label="商品名称"   align="center" min-width="150px">  </el-table-column>
          <el-table-column prop="categoryName" label="商品分类"   align="center" min-width="150px">  </el-table-column>
          <el-table-column prop="goodsWeight" label="重量(kg)" align="center" min-width="150px"></el-table-column>
          <el-table-column prop="price" label="销售价(元)" align="center" min-width="100px">
            <template slot-scope="{row}">
              <span>ï¿¥{{(row.price || 0).toFixed(2)}}</span>
            </template>
          </el-table-column>
          <el-table-column prop="goodsNum" label="数量" align="center" min-width="150px"></el-table-column>
          <el-table-column prop="totalPrice" label="小计(元)" align="center" min-width="150px">
            <template slot-scope="{row}">
              <span class="orange">ï¿¥{{(row.totalPrice || 0).toFixed(2)}}</span>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="info-item"  >
        <div class="info-item-a">商品总价:<span> ï¿¥{{((info.totalPrice||0)-(info.mailPrice || 0)).toFixed(2)}}</span></div>
        <div class="info-item-a">快递费:<span>ï¿¥{{(info.mailPrice||0).toFixed(2)}}</span></div>
        <div class="info-item-a">订单总价:<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div>
      </div>
      <div class="info-item"  >
        <div class="info-item-a">积分抵扣:<span v-if="(info.integral||0)>0">-ï¿¥{{(info.integral||0).toFixed(2) +'  '}}使用{{(info.useIntegral||0)}}积分抵扣¥{{(info.integral||0).toFixed(2) +'  '}}元</span></div>
        <div class="info-item-a">优惠券:<span v-if="(info.couponPrice||0)>0">-ï¿¥{{(info.couponPrice||0).toFixed(2) +'  '}} ä½¿ç”¨{{info.couponName}}</span></div>
        <div class="info-item-a">经销商结算:<span> ï¿¥{{(info.totalPrice||0).toFixed(2)}}</span></div>
      </div>
      <div class="info-item"  >
        <div class="info-item-a">实付金额:<span class="red"> ï¿¥{{(info.price||0).toFixed(2)}}</span></div>
        <div class="info-item-a">返还用户积分:<span class="orange"> {{(info.returnMemberIntegral||0)}}</span></div>
        <div class="info-item-a">返还经销商积分:<span class="orange">ï¿¥{{(info.shopSettlement || 0).toFixed(2) }}</span></div>
      </div>
      <div class="header">
        <div  class="header-b">退款内容</div>
        <div class="info-item"  >
          <el-form :model="form" ref="form" label-width="120px" label-suffix=":"  :rules="rules" inline>
            <el-form-item label="退款金额" prop="price" style="display: block;">
              <el-input type="number"  v-model="form.price" 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-checkbox style="border: none;" v-model="checked1" label="退还客户优惠券" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
                <el-checkbox style="border: none"  v-model="checked1" label="退还客户积分" border></el-checkbox>
              </el-form-item>
            </div>
            <div style="display:flex;">
              <el-form-item label="扣除" prop="refundInfo"  style="display: inline;">
                <el-checkbox style="border: none"  v-model="checked1" label="扣除经销商已结算金额" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
                <el-checkbox style="border: none"  v-model="checked1" label="扣除已返客户积分" border></el-checkbox>
              </el-form-item>
              <el-form-item label="" prop="refundInfo"  style="display: inline;">
                <el-checkbox style="border: none"  v-model="checked1" label="扣除已返经销商积分" border></el-checkbox>
              </el-form-item>
            </div>
            <el-form-item label="备注" prop="refundInfo"  style="display: block;">
              <el-input type="textarea" :autosize="{ minRows: 4, maxRows:4 }" style="width: 500px;" v-model="form.cancelInfo" placeholder="请输入取消说明"  v-trim/>
            </el-form-item>
          </el-form>
        </div>
      </div>
    </div>
    <template  v-slot:footer>
      <el-button type="primary" @click="confirm">确认</el-button>
      <el-button @click="visible=false">返回</el-button>
    </template>
  </GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
import { shopDetail } from '@/api/business/shop'
export default {
  name: 'OperaOrderRefundWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      title: '',
      visible2: false,
      visible: false,
      tabelHeight: null,
      info: {},
      shopInfo: {},
      rules: {
        price: [
          { required: true, message: '请输入退款金额', tigger: 'blur' }
        ]
      },
      // æœç´¢
      form: {
        id: '',
        checked1:false,
        price: 0,
        type: null
      }
    }
  },
  created () {
    this.config({
      module: '订单信息表',
      api: '/business/goodsorder',
      'field.id': 'id',
      'field.main': 'id'
    })
  },
  methods: {
    successBiz () {
      this.loadInfo()
      this.$emit('success')
    },
    loadInfo () {
      shopDetail(this.info.distributionShopId).then(res => {
        this.shopInfo = res || this.shopInfo
      })
    },
    open (title, info) {
      this.title = title
      this.visible = true
      this.info = info || {}
      this.form.price = ''
      if (this.info.distributionShopId != null) {
        this.loadInfo()
      }
    },
    confirm () {
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        this.$dialog.messageWaring(`确定进行退款该订单:${this.info.code}?`)
          .then(() => {
            this.isWorking = true
            this.api.orderRefund(this.form)
              .then(() => {
                this.visible = false
                this.$tip.apiSuccess('退款成功')
                this.$emit('success')
              }).catch(e => {
                this.$tip.apiFailed(e)
              })
              .finally(() => {
                this.isWorking = false
              })
          })
        // è°ƒç”¨æ–°å»ºæŽ¥å£
      })
    }
  }
}
</script>
<style scoped  lang="scss">
.table-pagination{
  position: fixed !important;
  bottom: 50px;
}
.header-b{
  display: inline-block;
  font-size: 16px;
  font-weight: bold;
}
.header-red-btn{
  display: inline-block;
  font-size: 12px;
  background-color:  red;
  padding: 2px 10px 3px 10px;
  margin-left: 20px;
  color: white;
  cursor: pointer;
  border-radius: 5px ;
}
.header-blue-btn{
  display: inline-block;
  font-size: 12px;
  background-color:  #216EEE;
  padding: 2px 10px 3px 10px;
  margin-left: 20px;
  color: white;
  cursor: pointer;
  border-radius: 5px ;
}
.header-grey{
  display: inline-block;
  font-size: 12px;
  border: 1px solid grey;
  padding: 2px 10px;
  margin-left: 20px;
  color: grey;
  border-radius: 5px ;
}
.header-orange{
  display: inline-block;
  font-size: 12px;
  border: 1px solid orange;
  padding: 2px 10px;
  margin-left: 20px;
  color: orange;
  border-radius: 5px ;
}
.header-btn{
  display: inline-block;
  border: none;
  padding: 2px 10px;
  margin-left: 20px;
}
.info-item{
  display: flex;
  width: 100%;
  margin: 15px;
}
.info-item-a{
  flex: 1;
  font-size: 14px;
}
.info-item-a span{
}
.info-item-a  .btn{
  font-size: 12px !important;
  cursor: pointer !important;
}
</style>
admin/src/components/business/OperaShipmentsWindow.vue
@@ -7,7 +7,7 @@
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules" label-width="120px" label-suffix=":"  inline>
      <p class="tip-warn" style="margin: 30px;"><i class="el-icon-warning"></i>操作说明:您正在针对订单:<span class="red">{{ form.code }} </span>进行{{ form.status==2?'快递变更':'发货' }}操作!</p>
      <p class="tip-warn" style="margin: 30px;font-size: 14px;"><i class="el-icon-warning"></i>操作说明:您正在针对订单:<span class="red">{{ form.code }} </span>进行{{ form.status==2?'快递变更':'发货' }}操作!</p>
      <el-form-item label="快递公司" prop="kdId">
        <el-select
          v-model="form.kdId"
admin/src/views/business/goodsorder.vue
@@ -85,7 +85,7 @@
            <span  v-if="item.status ==1" class="orange">{{item.receiveType==1?'待自提':'待发货'}}</span>
            <span  v-if="item.status ==2" class="orange">待收货</span>
            <span  v-if="item.status ==3" class="grey">交易完成</span>
            <span  v-if="item.status ==4" class="grey">已关闭</span>
            <span  v-if="item.status ==4" class="grey">已取消</span>
            <span  v-if="item.status ==6" class="grey">已退款</span>
          </div>
        </div>
@@ -125,9 +125,9 @@
          <div class="action">
            <el-button v-if="item.status==1 && item.receiveType!=1" style=" width: 80%;" type="primary" @click="$refs.operaShipmentsWindow.open('发货', item)">发货</el-button>
            <div></div>
            <el-button v-if="item.status == 0" style="color: red; "  type="text" @click="$refs.OperaOrderCancelWindow.open('取消订单', item)">取消订单</el-button>
            <el-button v-if="item.status == 0 || item.status==1" style="color: red; "  type="text" @click="$refs.OperaOrderCancelWindow.open('取消订单', item)">取消订单</el-button>
            <div></div>
            <el-button v-if="item.status == 3" style="color: red "  type="text" @click="cancelOrder(item)">订单退款</el-button>
            <el-button v-if="item.status == 3" style="color: red "  type="text"  @click="$refs.OperaOrderRefundWindow.open('订单退款', item)">订单退款</el-button>
            <div></div>
            <el-button v-if="item.status==2 && item.receiveType!=1" style="color: #666; " type="text"  @click="$refs.operaShipmentsWindow.open('快递信息变更', item)">快递变更</el-button>
            <div></div>
@@ -149,6 +149,7 @@
    <!-- æ–°å»º/修改 -->
    <OperaShipmentsWindow ref="operaShipmentsWindow" @success="search"/>
    <OperaOrderMarkWindow ref="operaOrderMarkWindow" @success="handlePageChange"/>
    <OperaOrderRefundWindow ref="OperaOrderRefundWindow" @success="handlePageChange"/>
    <OperaOrderCancelWindow ref="OperaOrderCancelWindow" @success="handlePageChange"/>
    <OperaGoodsOrderDetail ref="operaGoodsOrderDetail" @success="handlePageChange"/>
  </TableLayout>
@@ -162,10 +163,11 @@
import OperaOrderMarkWindow from '@/components/business/OperaOrderMarkWindow'
import OperaOrderCancelWindow from '@/components/business/OperaOrderCancelWindow'
import OperaGoodsOrderDetail from '@/components/business/OperaGoodsOrderDetail'
import OperaOrderRefundWindow from "@/components/business/OperaOrderRefundWindow";
export default {
  name: 'Goodsorder',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail,OperaOrderCancelWindow },
  components: {OperaOrderRefundWindow, TableLayout, Pagination, OperaShipmentsWindow, OperaOrderMarkWindow, OperaGoodsOrderDetail,OperaOrderCancelWindow },
  data () {
    return {
      status: '10',
@@ -177,7 +179,7 @@
        { name: '2', label: '待收货', count: 0 },
        { name: '3', label: '交易完成', count: 0 },
        { name: '6', label: '已退款', count: 0 },
        { name: '4', label: '交易关闭', count: 0 }],
        { name: '4', label: '已取消', count: 0 }],
      // æœç´¢
      searchForm: {
        id: '',
server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -142,6 +142,13 @@
        goodsorderService.orderPlanCancelOrder(goodsorder);
        return ApiResponse.success(null);
    }
    @ApiOperation("订单退款")
    @PostMapping("/orderRefund")
    @RequiresPermissions("business:goodsorder:update")
    public ApiResponse orderRefund(@RequestBody Goodsorder goodsorder) {
        goodsorderService.orderRefund(goodsorder);
        return ApiResponse.success(null);
    }
    @ApiOperation("物流查询")
server/dmmall_service/src/main/java/com/doumee/dao/business/model/Goodsorder.java
@@ -236,6 +236,9 @@
    @ApiModelProperty(value = "用户姓名")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "优惠券名称")
    @TableField(exist = false)
    private String couponName;
    @ApiModelProperty(value = "取消人员姓名")
    @TableField(exist = false)
    private String cancelUserName;
server/dmmall_service/src/main/java/com/doumee/service/business/GoodsorderService.java
@@ -235,5 +235,5 @@
    PageData<Goodsorder> shopOrderPage(PageWrap<ShopOrderRequest> pageWrap);
    void orderRefund(Goodsorder goodsorder);
}
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -388,7 +388,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),ResponseStatus.DATA_EMPTY.getMessage());
        }
        cancelOrder( query.getId(),  user.getId(),goodsorder.getCancelInfo() );
        cancelOrderNew( query.getId(),  user.getId(),goodsorder.getCancelInfo() );
    }
@@ -411,17 +411,27 @@
                .selectAs(Member::getNickname,Goodsorder::getNickName)
                .selectAs(Member::getPhone,Goodsorder::getPhone)
                .selectAs(Member::getName,Goodsorder::getMemberName)
                .selectAs(SystemUser::getRealname,Goodsorder::getKdUserName)
                .selectAs(MemberCoupon::getName,Goodsorder::getCouponName)
                .select("t4.realname",Goodsorder::getKdUserName)
                .select("t5.realname",Goodsorder::getCancelUserName)
                .select("t6.realname",Goodsorder::getRefundUserName)
                .selectAs(Shop::getName,Goodsorder::getShopName)
                .leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId)
                .leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId)
                .leftJoin(Member.class,Member::getId,Goodsorder::getMemberId)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getKdUser)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getCancelUser)
                .leftJoin(SystemUser.class,SystemUser::getId,Goodsorder::getRefundUserId)
                .eq(Goodsorder::getId,id);
        Goodsorder result=goodsorderJoinMapper.selectJoinOne(Goodsorder.class,q);
        if(Objects.nonNull(result)){
            MPJLambdaWrapper<GoodsorderDetail> queryWrapper = new MPJLambdaWrapper<>();
            queryWrapper.selectAll(GoodsorderDetail.class)
                    .selectAs(Labels::getName,GoodsorderDetail::getCategoryName)
                    .eq(GoodsorderDetail::getIsdeleted,Constants.ZERO)
                    .leftJoin(GoodsSku.class,GoodsSku::getId,GoodsorderDetail::getGoodsSkuId)
                    .leftJoin(Goods.class,Goods::getId,GoodsSku::getGoodsId)
                    .leftJoin(Labels.class,Labels::getId,Goods::getCategoryId)
                    .eq(GoodsorderDetail::getOrderId,result.getId()) ;
            List<GoodsorderDetail> goodsorderDetailList=goodsorderDetailMapper.selectList(queryWrapper);
            String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
@@ -430,6 +440,8 @@
                if(StringUtils.isNotBlank(model.getImgurl())){
                   model.setImgurl(path+ model.getImgurl());
                }
                //小计
                model.setTotalPrice(Constants.formatBigdecimal(model.getPrice()).multiply(new BigDecimal(Constants.formatIntegerNum(model.getGoodsNum()))));
            }
            result.setGoodsorderDetailList(goodsorderDetailList);
        }
@@ -456,6 +468,8 @@
        queryWrapper.selectAll(Goodsorder.class);
        queryWrapper.selectAs(Shop::getName,Goodsorder::getShopName);
        initPageQueryWrapper(queryWrapper,pageWrap);
        queryWrapper.selectAs(MemberCoupon::getName,Goodsorder::getCouponName);
        queryWrapper.leftJoin(MemberCoupon.class,MemberCoupon::getId,Goodsorder::getCouponId);
        queryWrapper.eq(pageWrap.getModel().getStatus()!=null,Goodsorder::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.orderByDesc(Goodsorder::getCreateDate);
@@ -1352,11 +1366,12 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!(Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_PAY.getKey())
        || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())
        || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){
            || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.PAY_DONE.getKey())
            || Constants.equalsInteger(goodsorder.getStatus(),Constants.OrderStatus.WAIT_RECEIVE.getKey()) )){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"订单取消失败:订单状态已流转!");
        }
        if(goodsorder.getPrice().compareTo(BigDecimal.ZERO)>Constants.ZERO){
        if(Constants.formatBigdecimal(goodsorder.getPrice()).compareTo(BigDecimal.ZERO)>Constants.ZERO
                && Constants.equalsObject(goodsorder.getPayStatus(),Constants.ONE) ){
            //微信现金退款
            String refundCode = WxMiniUtilService.wxRefund(goodsorder.getCode().toString(), goodsorder.getPrice(), goodsorder.getPrice());
            Fund fund = new Fund();
@@ -1934,7 +1949,6 @@
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void orderComment(OrderCommentRequest orderCommentRequest){
@@ -1973,6 +1987,18 @@
        goodsorder.setIsComment(Constants.ONE);
        goodsorderMapper.updateById(goodsorder);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public  void orderRefund(Goodsorder param){
        Goodsorder goodsorder = goodsorderMapper.selectById(param.getId());
        if(!goodsorder.getMemberId().equals(goodsorder.getMemberId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:用户信息匹配失败!");
        }
        if(!goodsorder.getStatus().equals(Constants.OrderStatus.DONE.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作失败:订单未完成,无法退款!");
        }
    }
    @Override