From 0a27546e1491fcaee616683349218d0c35805947 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 27 一月 2026 10:33:00 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java             |    8 +
 server/dmmall_service/src/main/java/com/doumee/service/business/WorkbenchService.java           |    3 
 admin/src/views/index.vue                                                                       |  135 +++++++++++++++++++++++----
 server/dmmall_service/src/main/java/com/doumee/dao/business/MemberCouponMapper.java             |    3 
 server/dmmall_service/src/main/java/com/doumee/dao/system/vo/NumberDataCountVO.java             |   28 +++++
 server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java             |    3 
 server/dmmall_admin/src/main/java/com/doumee/api/business/WorkbenchController.java              |   11 ++
 admin/src/components/business/OperaGoodsOrderDetail.vue                                         |    2 
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java  |   87 +++++++++++++++++
 admin/src/api/business/workbench.js                                                             |   10 ++
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java |    1 
 11 files changed, 267 insertions(+), 24 deletions(-)

diff --git a/admin/src/api/business/workbench.js b/admin/src/api/business/workbench.js
index 1b61405..1faead8 100644
--- a/admin/src/api/business/workbench.js
+++ b/admin/src/api/business/workbench.js
@@ -15,3 +15,13 @@
     trim: true
   })
 }
+export function couponData (data) {
+  return request.post('/business/workbench/couponData', data, {
+    trim: true
+  })
+}
+export function integralData (data) {
+  return request.post('/business/workbench/integralData', data, {
+    trim: true
+  })
+}
diff --git a/admin/src/components/business/OperaGoodsOrderDetail.vue b/admin/src/components/business/OperaGoodsOrderDetail.vue
index 093ec81..b0271d0 100644
--- a/admin/src/components/business/OperaGoodsOrderDetail.vue
+++ b/admin/src/components/business/OperaGoodsOrderDetail.vue
@@ -105,7 +105,7 @@
         <div class="info-item"  >
           <div class="info-item-a">杩旇繕鐢ㄦ埛绉垎锛�<span class="orange"> {{(info.returnMemberIntegral||0)}}</span></div>
           <div class="info-item-a">杩旇繕缁忛攢鍟嗙Н鍒嗭細<span class="orange">{{info.returnCustomerIntegral || 0 }}</span></div>
-          <div class="info-item-a"></div>
+          <div class="info-item-a">缁忛攢鍟嗛噾棰濓細<span class="orange"> 锟{(info.shopSettlement||0).toFixed(2)}}</span></div>
         </div>
         <div class="info-item"></div>
       <div class="header">
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index 34ad636..2cd5e29 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -56,7 +56,7 @@
       <div class="change-style">
         <div class="count-left">
           <div class="item-title" style="display: flex;">
-            <span style="flex: 1">缁忛攢鍟咺OP10</span>
+            <span style="flex: 1">缁忛攢鍟員OP10</span>
             <div class="tab-item" style="text-align: right;flex: 1.5; ">
               <span v-for="(item,index) in tabs1" :key="'tab'+index"  :class="item.index==tabIndex1?'active-tab tab-btn':'tab-btn'" @click="changeTab1(item)">{{item.name}}</span>
             </div>
@@ -98,7 +98,7 @@
         <div class="tab-title" style="display: flex;align-items: center; ">
           <span style="">钀ラ攢鏁版嵁鍒嗘瀽</span>
           <div class="tab-item" style="margin-left: 20px;" >
-            <el-date-picker  style="width: 110px;height: 22px;margin-right: 10px;"   v-model="searchForm.topYear2"  type="year"
+            <el-date-picker  style="width: 110px;height: 22px;margin-right: 10px;"   v-model="searchForm.topYear2"  type="year" @change="changeYear"
                              clearable  value-format="yyyy"     format="yyyy'骞�'"   placeholder="骞翠唤" ></el-date-picker>
           </div>
         </div>
@@ -106,25 +106,26 @@
       <div class="change-style">
         <div class="count-left">
           <div class="item-title">绉垎鍙戞斁绫诲瀷鍗犳瘮</div>
-          <div  class="bottom2" style="display: flex">
-              <div ref="integralCount" style="flex: 1"></div>
-              <div style="flex: 1;font-size: 14px;font-weight: 500;">
-                  <div>绱娑堣�楋細{{10000}}</div>
-                  <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+          <div  class="bottom2" style="display: flex;align-items: center">
+              <div ref="integralCount" style="flex: 1;min-height: 200px;"></div>
+              <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+                  <div>绱鍙戞斁鏁伴噺锛歿{( dataList4.num || 0 ) +( dataList4.num1 || 0 )+( dataList4.num2 || 0 )+( dataList4.num3 || 0 )}}</div>
+                  <div>绱娑堣�楋細{{ dataList4.useNum || 0 }}</div>
+                  <div>绱浼樻儬閲戦锛氾骏{{(dataList4.price || 0 ).toFixed(2) }}</div>
               </div>
           </div>
         </div>
         <div class="count-right">
           <div class="item-title">浼樻儬鍒稿彂鏀剧被鍨嬪崰姣�</div>
-          <div  class="bottom2">
-            <div  class="bottom2" style="display: flex">
-              <div ref="couponCount" style="flex: 1"></div>
-              <div style="flex: 1;font-size: 14px;font-weight: 500;">
-                <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{10000}}</div>
-                <div>绱浼樻儬閲戦锛氾骏{{10000 }}</div>
+            <div  class="bottom2" style="display: flex;align-items: center">
+              <div ref="couponCount" style="flex: 1;min-height: 200px;"></div>
+              <div style="flex: 1;font-size: 14px;font-weight: 500;margin-left: 20px;">
+                <div>绱鍙戞斁鏁伴噺锛歿{( dataList3.num || 0 ) +( dataList3.num1 || 0 )}}</div>
+                <div>宸蹭娇鐢ㄤ紭鎯犲埜锛歿{ dataList3.useNum || 0 }}</div>
+                <div>绱浼樻儬閲戦锛氾骏{{(dataList3.price || 0 ).toFixed(2) }}</div>
+                <div>淇冩垚浜ゆ槗閲戦锛氾骏{{(dataList3.orderPrice || 0 ).toFixed(2) }}</div>
               </div>
             </div>
-          </div>
         </div>
       </div>
       <div class="change-style" v-if="1==2">
@@ -150,6 +151,8 @@
       loading1: false,
       loading2: false,
       loading3: false,
+      loading4: false,
+      loading5: false,
       tabs2: [{ index: 0, name: '鎸夐攢閲�' }, { index: 1, name: '鎸夐攢鍞' }],
       tabs1: [{ index: 0, name: '鎸夎鍗曢噺' }, { index: 1, name: '鎸夐攢鍞' }, { index: 2, name: '鎸変細鍛樻暟' }],
       tabs: [{ index: 0, name: '浠婃棩' }, { index: 1, name: '杩�7鏃�' }, { index: 2, name: '杩�30鏃�' }, { index: 3, name: '杩�12鏈�' }],
@@ -181,8 +184,12 @@
       },
       dataList1: [],
       dataList2: [],
+      dataList4: [],
+      dataList3: [],
       myChart0: null,
-      myChart1: null
+      myChart1: null,
+      myChart2: null,
+      myChart3: null
     }
   },
   created () {
@@ -197,11 +204,37 @@
     this.initTopData()
     this.initShopRankData()
     this.initGoodsRankData()
+    this.initIntegralData()
+    this.initCouponData()
   },
   methods: {
     changeYearMonth(){
       this.initGoodsRankData()
       this.initShopRankData()
+    },
+    changeYear(){
+      this.initIntegralData()
+      this.initCouponData()
+    },
+    initCouponData () {
+      this.loading4 = true
+      this.api.couponData({year: this.searchForm.topYear2}).then(res => {
+        res = res || {}
+        this.dataList3 = res
+        this.renderEchartOption3()
+      }).finally(() => {
+        this.loading4 = false
+      })
+    },
+    initIntegralData () {
+      this.loading5 = true
+      this.api.integralData({ year: this.searchForm.topYear2}).then(res => {
+        res = res || {}
+        this.dataList4 = res
+        this.renderEchartOption2()
+      }).finally(() => {
+        this.loading5 = false
+      })
     },
     initShopRankData () {
       this.loading2 = true
@@ -236,7 +269,7 @@
         res.cateList = res.cateList || []
         this.topData = res
         this.renderEchartOption0()
-        this.renderEchartOption2()
+        this.renderEchartOption1()
       }).finally(() => {
         this.loading1 = false
       })
@@ -250,8 +283,18 @@
       window.addEventListener('resize', () => {
         this.myChart1.resize()
       })
+      this.myChart2 = echarts.init(this.$refs.integralCount)
+      window.addEventListener('resize', () => {
+        this.myChart2.resize()
+      })
+      this.myChart3 = echarts.init(this.$refs.couponCount)
+      window.addEventListener('resize', () => {
+        this.myChart3.resize()
+      })
       this.renderEchartOption0()
+      this.renderEchartOption1()
       this.renderEchartOption2()
+      this.renderEchartOption3()
     },
     changeTab (item) {
       if (this.loading1) {
@@ -336,7 +379,7 @@
         ]
       })
     },
-    renderEchartOption2 () {
+    renderEchartOption1 () {
       const series = []
       this.topData.cateList.forEach((item, index) => {
         series.push( {
@@ -347,7 +390,7 @@
           label: {
             // show: true
           },
-          data: item.data||[]
+          data: item.data || []
         })
       })
       this.myChart1.setOption({
@@ -375,10 +418,62 @@
           boundaryGap: false,
           data: this.topData.dateStrList || []
         },
-        yAxis: { type: 'value' } ,
+        yAxis: { type: 'value' },
         series
       })
-    }
+    },
+    renderEchartOption2() {
+      this.myChart2.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        series: [
+          {
+            name: 'Access From',
+            type: 'pie',
+            radius: '50%',
+            data: [
+              { value: this.dataList4.num || 0, name: '鎵嬪姩澧炲姞' },
+              { value: this.dataList4.num1 || 0, name: '閭�璇峰ソ鍙�' },
+              { value: this.dataList4.num2 || 0, name: '娑堣垂杩斿埄' },
+              { value: this.dataList4.num3 || 0, name: '娉ㄥ唽璧犻��' }
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      })
+    },
+    renderEchartOption3() {
+      this.myChart3.setOption({
+        tooltip: {
+          trigger: 'item'
+        },
+        series: [
+          {
+            name: '浼樻儬鍒稿彂鏀�',
+            type: 'pie',
+            radius: '50%',
+            data: [
+              { value: this.dataList3.num1 || 0, name: '鎶樻墸鍒�' },
+              { value: this.dataList3.num || 0, name: '婊″噺鍒�' }
+            ],
+            emphasis: {
+              itemStyle: {
+                shadowBlur: 10,
+                shadowOffsetX: 0,
+                shadowColor: 'rgba(0, 0, 0, 0.5)'
+              }
+            }
+          }
+        ]
+      })
+    },
   }
 }
 </script>
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java
index 4cf2711..7c29c2a 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/GoodsorderController.java
@@ -12,6 +12,8 @@
 import com.doumee.core.utils.kuaidi100.ExpressUtils;
 import com.doumee.dao.business.model.Goodsorder;
 import com.doumee.dao.business.model.GoodsorderExport;
+import com.doumee.dao.web.request.AfterSaleApplyRequest;
+import com.doumee.service.business.AftersaleService;
 import com.doumee.service.business.GoodsorderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -36,6 +38,8 @@
 
     @Autowired
     private GoodsorderService goodsorderService;
+    @Autowired
+    private AftersaleService aftersaleService;
 
     @PreventRepeat
     @ApiOperation("鏂板缓")
@@ -140,8 +144,8 @@
     @ApiOperation("璁㈠崟閫�娆�")
     @PostMapping("/orderRefund")
     @RequiresPermissions("business:goodsorder:update")
-    public ApiResponse orderRefund(@RequestBody Goodsorder goodsorder) {
-        goodsorderService.orderRefund(goodsorder);
+    public ApiResponse orderRefund(@RequestBody AfterSaleApplyRequest goodsorder) {
+        aftersaleService.afterSaleApply(goodsorder);
         return ApiResponse.success(null);
     }
 
diff --git a/server/dmmall_admin/src/main/java/com/doumee/api/business/WorkbenchController.java b/server/dmmall_admin/src/main/java/com/doumee/api/business/WorkbenchController.java
index 6b7afac..b92b655 100644
--- a/server/dmmall_admin/src/main/java/com/doumee/api/business/WorkbenchController.java
+++ b/server/dmmall_admin/src/main/java/com/doumee/api/business/WorkbenchController.java
@@ -7,6 +7,7 @@
 import com.doumee.dao.system.dto.CountDataDTO;
 import com.doumee.dao.system.vo.BusinessDataCountVO;
 import com.doumee.dao.system.vo.CountDataVO;
+import com.doumee.dao.system.vo.NumberDataCountVO;
 import com.doumee.service.business.FundService;
 import com.doumee.service.business.WorkbenchService;
 import io.swagger.annotations.Api;
@@ -34,6 +35,16 @@
     public ApiResponse<BusinessDataCountVO> businessData(@RequestBody CountDataDTO param) {
         return ApiResponse.success(workbenchService.businessData(param));
     }
+    @ApiOperation("绉垎鍙戞斁鏁版嵁缁熻")
+    @PostMapping("/integralData")
+    public ApiResponse<NumberDataCountVO> integralData(@RequestBody CountDataDTO param) {
+        return ApiResponse.success(workbenchService.integralData(param));
+    }
+    @ApiOperation("浼樻儬鍒稿彂鏀炬暟鎹粺璁�")
+    @PostMapping("/couponData")
+    public ApiResponse<NumberDataCountVO> couponData(@RequestBody CountDataDTO param) {
+        return ApiResponse.success(workbenchService.couponData(param));
+    }
     @ApiOperation("缁忛攢鍟員OP10")
     @PostMapping("/shopRankList10")
     public ApiResponse<List<BusinessDataCountVO>> shopRankList10(@RequestBody CountDataDTO param) {
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberCouponMapper.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberCouponMapper.java
index f607b6e..9bf145e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberCouponMapper.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/MemberCouponMapper.java
@@ -7,6 +7,7 @@
 import com.doumee.dao.business.model.MemberCoupon;
 import com.doumee.dao.web.dto.CouponDTO;
 import com.doumee.dao.web.response.MemberCouponResponse;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -14,7 +15,7 @@
  * @author 姹熻箘韫�
  * @date 2023/03/21 15:48
  */
-public interface MemberCouponMapper extends BaseMapper<MemberCoupon> {
+public interface MemberCouponMapper extends MPJJoinMapper<MemberCoupon> {
 
 
     @Select(" select m.*   " +
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
index 9d6bff5..1b3922e 100644
--- a/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/business/model/MemberCoupon.java
@@ -117,6 +117,9 @@
     @TableField(exist = false)
     @ExcelColumn(name="鐢ㄦ埛",width = 10,index = 1)
     private String nikeName;
+    @ApiModelProperty(value = "缁熻鏁伴噺")
+    @TableField(exist = false)
+    private Long num;
     @ApiModelProperty(value = "鍏宠仈璁㈠崟鍙峰彿")
     @ExcelColumn(name="鍏宠仈璁㈠崟鍙�",width = 10,index = 10)
     @TableField(exist = false)
diff --git a/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/NumberDataCountVO.java b/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/NumberDataCountVO.java
new file mode 100644
index 0000000..686c236
--- /dev/null
+++ b/server/dmmall_service/src/main/java/com/doumee/dao/system/vo/NumberDataCountVO.java
@@ -0,0 +1,28 @@
+package com.doumee.dao.system.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel("绉垎銆佷紭鎯犲埜鍙戞斁缁熻鏁版嵁")
+public class NumberDataCountVO {
+    @ApiModelProperty(value = "绉垎鎵嬪姩澧炲姞銆佹弧鍑忎紭鎯犲埜鏁伴噺")
+    private Long num;
+    @ApiModelProperty(value = "绉垎閭�璇峰ソ鍙嬪鍔犮�佹姌鎵e埜鏁版嵁")
+    private Long num1;
+    @ApiModelProperty(value = "绉垎娑堣垂杩斿埄澧炲姞")
+    private Long num2;
+    @ApiModelProperty(value = "绉垎娉ㄥ唽璧犻�佸鍔�")
+    private Long num3;
+    @ApiModelProperty(value = "绱娑堣�楃Н鍒嗐�佺疮璁′娇鐢ㄤ紭鎯犲埜鏁伴噺")
+    private Long useNum;
+    @ApiModelProperty(value = "绱浼樻儬閲戦")
+    private BigDecimal price;
+    @ApiModelProperty(value = "绱浜ゆ槗閲戦")
+    private BigDecimal orderPrice;
+}
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/WorkbenchService.java b/server/dmmall_service/src/main/java/com/doumee/service/business/WorkbenchService.java
index 170ac07..c650c02 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/WorkbenchService.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/WorkbenchService.java
@@ -6,6 +6,7 @@
 import com.doumee.dao.system.dto.CountDataDTO;
 import com.doumee.dao.system.vo.BusinessDataCountVO;
 import com.doumee.dao.system.vo.CountDataVO;
+import com.doumee.dao.system.vo.NumberDataCountVO;
 
 import java.util.List;
 
@@ -16,6 +17,8 @@
  */
 public interface WorkbenchService {
 
+    NumberDataCountVO integralData(CountDataDTO param);
+    NumberDataCountVO couponData(CountDataDTO param);
     BusinessDataCountVO businessData(CountDataDTO param);
 
     List<BusinessDataCountVO> shopRankList10(CountDataDTO param);
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
index 0d71799..277edae 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java
@@ -1845,6 +1845,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鎿嶄綔澶辫触锛氳鍗曟湭瀹屾垚锛屾棤娉曢��娆撅紒");
         }
 
+
     }
 
 
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java
index 0a6262c..c8e576b 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java
@@ -23,6 +23,7 @@
 import com.doumee.dao.system.model.SystemUser;
 import com.doumee.dao.system.vo.BusinessDataCountVO;
 import com.doumee.dao.system.vo.CountDataVO;
+import com.doumee.dao.system.vo.NumberDataCountVO;
 import com.doumee.dao.web.dto.CollectDTO;
 import com.doumee.dao.web.dto.MemberDTO;
 import com.doumee.dao.web.dto.MultiFileDTO;
@@ -59,6 +60,12 @@
 public class WorkbenchServiceImpl implements WorkbenchService {
     @Autowired
     private GoodsorderMapper goodsorderMapper;
+    @Autowired
+    private MemberCouponMapper memberCouponMapper;
+    @Autowired
+    private InviteRecordMapper inviteRecordMapper;
+    @Autowired
+    private IntegralMapper integralMapper;
     @Autowired
     private GoodsorderDetailMapper goodsorderDetailMapper;
     @Override
@@ -122,6 +129,86 @@
         return list1;
     }
     @Override
+    public    NumberDataCountVO couponData(CountDataDTO param){
+        NumberDataCountVO data = new NumberDataCountVO();
+        //鍙戞斁绫诲瀷缁熻
+        List<MemberCoupon> r1 =  memberCouponMapper.selectList(new MPJLambdaWrapper<MemberCoupon>()
+                .select("(select count(t.id) )",MemberCoupon::getNum)
+                .select( MemberCoupon::getCouponType)
+                .apply(param.getYear()!=null,"YEAR ( t.CREATE_DATE )="+param.getYear() )
+                .eq(MemberCoupon::getIsdeleted,Constants.ZERO)
+                .groupBy(MemberCoupon::getCouponType));
+        if(r1!=null){
+            for(MemberCoupon c : r1){
+                if(Constants.equalsInteger(c.getCouponType(),Constants.ZERO)){
+                    data.setNum(Constants.formatLongNum(c.getNum()));//婊″噺鍒�
+                }else{
+                    data.setNum1(Constants.formatLongNum(c.getNum()));//婊″噺鍒�
+                }
+            }
+        }
+        //宸蹭娇鐢�
+        Long r2 =  memberCouponMapper.selectCount(new MPJLambdaWrapper<MemberCoupon>()
+                .apply(param.getYear()!=null,"YEAR ( t.use_Date )="+param.getYear() )
+                .eq(MemberCoupon::getIsdeleted,Constants.ZERO));
+        data.setUseNum(Constants.formatLongNum(r2));
+        //浼樻儬閲戦鍜屼氦鏄撻噾棰�
+        Goodsorder r3 =  goodsorderMapper.selectOne(new MPJLambdaWrapper<Goodsorder>()
+                .select("(select sum(t.total_price) )",Goodsorder::getTotalPrice)
+                .select("(select sum(t.coupon_price) )",Goodsorder::getCouponPrice)
+                .apply(param.getYear()!=null,"YEAR ( t.CREATE_DATE )="+param.getYear() )
+                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+                .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey(),Constants.OrderStatus.REFUND.getKey()) );
+        if(r3!=null){
+            data.setPrice(Constants.formatBigdecimal(r3.getCouponPrice()));
+            data.setOrderPrice(Constants.formatBigdecimal(r3.getTotalPrice()));
+        }
+        return  data;
+
+    }
+    @Override
+    public    NumberDataCountVO integralData(CountDataDTO param){
+        NumberDataCountVO data = new NumberDataCountVO();
+        //鍙戞斁绉垎绫诲瀷缁熻
+        List<Integral> r1 =  integralMapper.selectList(new MPJLambdaWrapper<Integral>()
+                .select("(select sum(t.num) )",Integral::getNum)
+                .select( Integral::getObjType)
+                .apply(param.getYear()!=null,"YEAR ( t.CREATE_DATE )="+param.getYear() )
+                .eq(Integral::getIsdeleted,Constants.ZERO)
+                .eq(Integral::getType,Constants.ZERO)
+                .in(Integral::getObjType,Constants.IntegralObjType.REGISTER.getKey(),
+                        Constants.IntegralObjType.INVITENEWUSER.getKey(),
+                        Constants.IntegralObjType.ORDER_DONATE.getKey(),
+                        Constants.IntegralObjType.SYSTEM_RECHARGE.getKey())
+                .groupBy(Integral::getObjType));
+        if(r1!=null){
+            for(Integral c : r1){
+                if(Constants.equalsInteger(c.getObjType(),Constants.IntegralObjType.SYSTEM_RECHARGE.getKey())){
+                    data.setNum(Constants.formatBigdecimal(c.getNum()).longValue());//骞冲彴娣诲姞
+                }else if(Constants.equalsInteger(c.getObjType(),Constants.IntegralObjType.INVITENEWUSER.getKey())){
+                    data.setNum1(Constants.formatBigdecimal(c.getNum()).longValue());//閭�璇�
+                }else if(Constants.equalsInteger(c.getObjType(),Constants.IntegralObjType.ORDER_DONATE.getKey())){
+                    data.setNum2(Constants.formatBigdecimal(c.getNum()).longValue());//娑堣垂杩斿埄
+                }else if(Constants.equalsInteger(c.getObjType(),Constants.IntegralObjType.REGISTER.getKey())){
+                    data.setNum3(Constants.formatBigdecimal(c.getNum()).longValue());//娉ㄥ唽
+                }
+            }
+        }
+        //浼樻儬閲戦鍜屼氦鏄撻噾棰�
+        Goodsorder r3 =  goodsorderMapper.selectOne(new MPJLambdaWrapper<Goodsorder>()
+                .select("(select sum(t.integral) )",Goodsorder::getIntegral)
+                .select("(select sum(t.use_integral) )",Goodsorder::getUseIntegral)
+                .apply(param.getYear()!=null,"YEAR ( t.CREATE_DATE )="+param.getYear() )
+                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
+                .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey(),Constants.OrderStatus.REFUND.getKey()) );
+        if(r3!=null){
+            data.setUseNum(Constants.formatBigdecimal(r3.getUseIntegral()).longValue());
+            data.setPrice(Constants.formatBigdecimal(r3.getIntegral()));
+        }
+        return  data;
+
+    }
+    @Override
     public BusinessDataCountVO businessData(CountDataDTO param) {
         BusinessDataCountVO data = new BusinessDataCountVO();
         int dataType = param.getDateType();//0浠婃棩 1杩戜竷鏃� 2杩�30鏃� 3杩�1骞�

--
Gitblit v1.9.3