doum
13 小时以前 bd57b7c6e2307d6dfb07d778adfefc13c1afbffe
经销商管理
已添加1个文件
已修改10个文件
353 ■■■■■ 文件已修改
admin/src/components/business/OperaGoodsInfoWindow.vue 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaGoodsWindow.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaShopInfoWindow.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/platformGoods.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/core/utils/CodeGenerator.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/controller.vm 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/db.vm 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmmall_service/src/main/resources/templates/serviceImpl.vm 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaGoodsInfoWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,271 @@
<template>
  <GlobalWindow
    v-loading="isUploading"
    :title="title"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules" label-width="110px" label-suffix=":" inline>
      <el-form-item label="商品名称" prop="name">
        <el-input v-model="form.name" placeholder="请输入商品名称" disabled v-trim/>
      </el-form-item>
      <el-form-item label="商品分类" prop="categoryId">
        <el-select  v-model="form.categoryId"  disabled  placeholder="请选择所属分类"  clearable filterable >
          <el-option
            v-for="item in labels()"
            :key="item.id"
            :value="item.id"
            :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="商品品牌" prop="brandId">
        <el-select v-model="form.brandId" disabled   placeholder="请选择商品品牌" clearable filterable >
          <el-option
            v-for="item in brands()"
            :key="item.id"
            :value="item.id"
            :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="商品主图" prop="imgurl">
        <div  style="display: flex; align-items: center;   height: 100%; width: 100%">
          <el-image style="width: 50px;height: 50px;" v-if="form.imgurlfull" :src="form.imgurlfull" :preview-src-list="[form.imgurlfull]"></el-image>
        </div>
      </el-form-item>
      <el-form-item label="商品轮播图" prop="fileList">
        <div  v-if="form.fileList && form.length">
          <el-image v-for="item in form.fileList" style="width: 50px;height: 50px;" :src="item.url" :preview-src-list="[item.url]"></el-image>
        </div>
      </el-form-item>
      <el-form-item label="出厂价(元)" prop="price">
        <el-input type="number" v-model="form.price" placeholder="请输入出厂价" v-trim> disabled  <template slot="append"> å…ƒ</template>  </el-input>
      </el-form-item>
      <el-form-item label="销售价(元)" prop="skuPrice">
        <el-input type="number" v-model="form.skuPrice" placeholder="请输入销售价" disabled v-trim>  <template slot="append"> å…ƒ</template>  </el-input>
      </el-form-item>
      <el-form-item label="划线价(元)" prop="showPrice">
        <el-input type="number" v-model="form.showPrice" placeholder="请输入线价" disabled v-trim>  <template slot="append"> å…ƒ</template>  </el-input>
      </el-form-item>
      <el-form-item label="积分抵扣额度" prop="deductRata">
        <el-input type="number" v-model="form.deductRata" disabled placeholder="请输入积分抵扣额度" v-trim>
          <template slot="append">%</template>
        </el-input>
        <p class="tip-warn" style="margin-bottom: 1px;"><i class="el-icon-warning"></i>提醒:积分可抵扣金额占商品零售价的百分比,0.1%~100%之间 </p>
      </el-form-item>
      <el-form-item  label="库存量" prop="stockNum">
        <el-input type="number" v-model="form.stockNum" disabled placeholder="请输入商品库存量" v-trim/>
      </el-form-item>
      <el-form-item label="商品单位" prop="unitName">
        <el-input v-model="form.unitName" disabled placeholder="请输入商品单位" v-trim/>
      </el-form-item>
      <el-form-item  label="初始销量" prop="salenum">
        <el-input type="number" v-model="form.salenum" disabled placeholder="请输入初始销量" v-trim/>
      </el-form-item>
      <el-form-item  label="商品重量" prop="weight">
        <el-input type="number" v-model="form.weight" disabled placeholder="请输入商品重量" v-trim>
        <template slot="append">kg</template>
        </el-input>
      </el-form-item>
      <el-form-item label="是否上架" prop="status">
        <el-radio-group v-model="form.status" disabled>
          <el-radio :value="1" :label="1" >上架</el-radio>
          <el-radio :value="0" :label="0" >下架</el-radio>
        </el-radio-group>
      </el-form-item>
      <el-form-item label="使用商品品牌" prop="brandIdList">
        <el-select v-model="form.brandIdList" disabled  placeholder="请选择商品品牌" clearable multiple @change="changeBrand">
          <el-option
              v-for="item in applyBrands"
              :key="item.id"
              :value="item.id"
              :label="item.name"
          ></el-option>
        </el-select>
      </el-form-item>
      <div v-if="form.brandIdList && form.brandIdList.length" style="border:1px solid #f2f2f2; margin-left: 150px;width: 700px;padding: 20px 0 0px 0;margin-bottom: 20px;"  class="el-form-item__content">
<!--
        <span style="line-height: 32px;font-size: 14px;"><b style="color: #F56C6C;margin-right: 4px;font-size: 11px;">*</b>{{'【'+(item.name)+'】系列:'}}</span>
-->
        <el-form-item  v-for="(item,index) in applyBrands.filter(item=>item.show)"   :key="'warning_'+index" style="display: block;width: 100%;"  :label="'【'+(item.name)+'】系列'"  >
          <el-select v-model="item.childIdList" filterable disabled    multiple   style=" width: 500px;"  clearable  placeholder="请选择品牌系列" >
            <el-option v-for="item in item.childList"   :label="item.name" :value="item.id" :key="'brand_'+index+item.id">  </el-option>
          </el-select>
        </el-form-item>
<!--
        <el-button type="danger" style="margin-left: 10px;height: 32px; " @click="delDo(index)" v-if="index>0 || form.detailList.length>1">删除</el-button>
-->
      </div>
      <el-form-item label="商品详情" prop="content">
        <div  class="agree-list"   v-html="form.content"></div>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import RichEditor from '@/components/common/RichEditor'
import { findAll as labelList } from '@/api/business/labels'
export default {
  name: 'OperaGoodsInfoWindow',
  extends: BaseOpera,
  components: { GlobalWindow,   RichEditor },
  data () {
    return {
      isUploading: false,
      // è¡¨å•数据
      form: {
        id: null,
        name: '',
        categoryId: '',
        brandId: '',
        price: '',
        fileList: [],
        imgurl: '',
        imgurlfull: '',
        salenum: '',
        type: 0,
        info: '',
        content: '',
        sortnum: '',
        skuPrice: null,
        status: 1,
        showPrice: null,
        deductRata: null,
        weight: null,
        unitName: '',
        stockNum: null,
        brandIdList: [],
        brandList: []
      },
      applyBrands: [],
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  inject: ['labels', 'brands'],
  created () {
    this.config({
      api: '/business/goods',
      'field.id': 'id'
    })
    this.loadBrandList()
  },
  methods: {
    isSeletedBrand (val) {
      var r = false
      if (!this.form.brandIdList || !this.form.brandIdList.length) {
        return false
      }
      this.form.brandIdList.forEach(item => {
        if (item === val.id) {
          r = true
        }
      })
      return r
    },
    changeBrand () {
      this.applyBrands.forEach(item => {
        item.show = this.isSeletedBrand(item)
      })
      console.log(this.form.brandIdList, this.applyBrands)
    },
    loadBrandList () {
      labelList({
        type: 14 // é€‚应商品品牌
      })
        .then(res => {
          this.applyBrands = res
          this.applyBrands.forEach(item => {
            item.show = this.isSeletedBrand(item)
            if(this.form.id && this.form.brandList && this.form.brandList.length){
              this.form.brandList.forEach(item1 => {
                if (item1.id === item.id) {
                  item.childIdList = item1.childIdList
                }
              })
            }
          })
        })
    },
    getWangedditor (val) {
      this.form.content = val
    },
    open (title, target, type) {
      this.title = title
      this.form.brandIdList = []
      this.form.fileList = []
      this.form.imgurl = ''
      this.form.imgurlfull = ''
      // æ–°å»º
      if (target == null) {
        return
      }
      this.visible = true
      // ç¼–辑
      this.$nextTick(async () => {
        for (const key in this.form) {
          this.form[key] = target[key]
        }
        this.form.type = type
        await this.loadInfo(this.form.id)
        if (this.form.imgurl) {
          this.form.imgurlfull = target.resourcePath + target.imgurl
        }
      })
    },
    loadInfo () {
      this.form.brandIdList = []
      this.form.fileList = []
      this.api.detail(this.form.id).then(res => {
        if (res && res.brandList) {
          this.form.brandList = res.brandList
          res.brandList.forEach(item => {
            this.form.brandIdList.push(item.id)
          })
        }
        if (res.fileList && res.fileList.length) {
          res.fileList.forEach(item => {
            this.form.fileList.push(
              {
                fileurl: item.fileurl,
                name: item.fileName,
                url: res.resourcePath + item.fileurl
              }
            )
          })
          console.log(this.form.fileList)
        }
        this.loadBrandList()
      })
    }
  }
}
</script>
<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%;
  }
}
::v-deep  .el-form-item__label{
  width: 150px !important;
}
.agree-list{
  height: 550px;
  //max-height: 50%;
  overflow: auto;
}
</style>
admin/src/components/business/OperaGoodsWindow.vue
@@ -31,7 +31,7 @@
        </el-select>
      </el-form-item>
      <el-form-item label="商品主图" prop="imgurl">
        <div  style="display: flex; align-items: center;justify-content: center;  height: 100%; width: 100%">
        <div  style="display: flex; align-items: center;   height: 100%; width: 100%">
          <UploadAvatarImage
              :file="{ 'imgurlfull': form.imgurlfull, 'imgurl': form.imgurl}"
              :uploadData="{folder:'goods'}"
@@ -106,7 +106,7 @@
<!--
        <span style="line-height: 32px;font-size: 14px;"><b style="color: #F56C6C;margin-right: 4px;font-size: 11px;">*</b>{{'【'+(item.name)+'】系列:'}}</span>
-->
        <el-form-item  v-for="(item,index) in applyBrands" v-if="item.show" :key="'warning_'+index" style="display: block;width: 100%;"  :label="'【'+(item.name)+'】系列'"  >
        <el-form-item  v-for="(item,index) in applyBrands.filter(item=>item.show)"   :key="'warning_'+index" style="display: block;width: 100%;"  :label="'【'+(item.name)+'】系列'"  >
          <el-select v-model="item.childIdList" filterable  multiple   style=" width: 500px;"  clearable  placeholder="请选择品牌系列" >
            <el-option v-for="item in item.childList"   :label="item.name" :value="item.id" :key="'brand_'+index+item.id">  </el-option>
          </el-select>
@@ -210,6 +210,13 @@
          this.applyBrands = res
          this.applyBrands.forEach(item => {
            item.show = this.isSeletedBrand(item)
            if(this.form.id && this.form.brandList && this.form.brandList.length){
              this.form.brandList.forEach(item1 => {
                if (item1.id === item.id) {
                  item.childIdList = item1.childIdList
                }
              })
            }
          })
        })
    },
admin/src/components/business/OperaShopInfoWindow.vue
@@ -7,12 +7,12 @@
    <div class="detail-box">
      <div class="platgroup_tabs">
        <div class="tab" :class="{ active: activeGroup === item.id }" @click="groupClick(item)"
             v-for="(item, i) in groupList" :key="i">
             v-for="(item, i) in groupList" :key="'tab_'+i">
          {{ item.name }}
        </div>
      </div>
    </div>
    <template v-if="activeGroup ==0">
    <template v-if="activeGroup ===0">
      <div class="detail-box">
        <div class="header">
          <div  class="header-b">基本信息</div>
@@ -109,7 +109,7 @@
        </TableLayout>
      </div>
    </template>
    <template v-else-if="activeGroup == 1">
    <template v-if="activeGroup === 1">
      <div class="detail-box">
        <el-form ref="searchForm1"   :model="searchForm1"    style="display: block;" >
          <el-form-item label="" prop="code" style="display: inline-block;margin-right: 30px;">
@@ -179,7 +179,7 @@
              <el-table-column prop="details" label="商品信息"   align="center" min-width="250px" show-overflow-tooltip>
                <template slot-scope="{row}">
                  <div v-if="row.goodsorderDetailList && row.goodsorderDetailList.length"  style="width: 220px">
                      <div v-for="(item) in row.goodsorderDetailList" style="display: flex">
                      <div v-for="(item) in row.goodsorderDetailList" :key="'itemdetail_'+item.id" style="display: flex">
                        <div style="flex: 1">【{{item.name}}】</div><div style="flex: 1">销售价:{{item.price||0}} æ•°é‡ï¼š{{item.goodsNum||0}}</div>
                      </div>
                  </div>
@@ -220,7 +220,7 @@
        </TableLayout>
      </div>
    </template>
    <template v-else-if="activeGroup == 2">
    <template v-if="activeGroup === 2">
      <div  class="detail-box">
        <div class="header">
          <div  class="header-b">积分明细</div>
@@ -517,6 +517,7 @@
.platgroup_tabs {
  flex: 1;
  display: flex;
  font-size: 15px;
  border-bottom: 1px solid #dfe2e8;
  margin-bottom: 30px;
  .tab {
admin/src/views/business/platformGoods.vue
@@ -77,7 +77,11 @@
            <el-image style="width: 50px;height: 50px;" v-if="row.imgurl && row.imgurl!=''" :src="row.resourcePath+row.imgurl" :preview-src-list="[row.resourcePath+row.imgurl]"></el-image>
          </template>
        </el-table-column>
        <el-table-column prop="id" label="商品ID" min-width="150px" ></el-table-column>
        <el-table-column prop="id" label="商品ID" min-width="150px" >
          <template slot-scope="{row}">
            <span class="blue" style="cursor: pointer" @click="$refs.OperaGoodsInfoWindow.open('商品详情', row, 0)">{{row.id}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="商品名称" min-width="150px" show-overflow-tooltip></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>
@@ -112,7 +116,6 @@
             <el-button type="text" v-if="row.status == 1" @click="$refs.operaGoodsWindow.open('编辑商品', row, 0)" v-permissions="['business:goods:update']">编辑</el-button>
            <el-button type="text" v-permissions="['business:goods:update']" @click="goPriceSet(row)">供货价</el-button>
            <el-button type="text" style="color: red;" @click="deleteById(row)" v-permissions="['business:goods:delete']">删除</el-button>
            <!-- <el-button type="text" @click="$refs.operaGoodsDetailWindow.open('商品详情', row, 0)">查看详情</el-button>-->
          </template>
        </el-table-column>
      </el-table>
@@ -125,7 +128,7 @@
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaGoodsWindow ref="operaGoodsWindow" @success="handlePageChange"/>
    <OperaGoodsDetailWindow ref="operaGoodsDetailWindow"/>
    <OperaGoodsInfoWindow ref="OperaGoodsInfoWindow"/>
    <OperaPlatformGoodsSkuWindow ref="operaPlatformGoodsSkuWindow"/>
    <OperaShopGoodsWindow ref="OperaShopGoodsWindow" @success="priceSuccess"/>
  </TableLayout>
@@ -136,14 +139,14 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
import OperaGoodsDetailWindow from '@/components/business/OperaGoodsDetailWindow'
import OperaGoodsInfoWindow from '@/components/business/OperaGoodsInfoWindow'
import OperaPlatformGoodsSkuWindow from '@/components/business/OperaPlatformGoodsSkuWindow'
import OperaShopGoodsWindow from '@/components/business/OperaShopGoodsWindow'
import { findAll as labelList } from '@/api/business/labels'
export default {
  name: 'Goods',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaGoodsWindow, OperaGoodsDetailWindow, OperaPlatformGoodsSkuWindow, OperaShopGoodsWindow },
  components: { TableLayout, Pagination, OperaGoodsWindow, OperaGoodsInfoWindow, OperaPlatformGoodsSkuWindow, OperaShopGoodsWindow },
  data () {
    return {
      activeName: 'first',
admin/src/views/index.vue
@@ -509,13 +509,13 @@
  .tab-btn{
    font-weight: normal;
    cursor: pointer;
    border-radius: 0px;
    border-radius: 1px;
    margin: 0px 5px;
    font-size: 12px;
    border: 1px solid #999;
    color: #999;
    padding: 1px 5px;
    background-color: #f2f2f2;
    background-color: #f4f7fc;
  }
}
.data {
server/dmmall_service/src/main/java/com/doumee/core/utils/CodeGenerator.java
@@ -18,7 +18,7 @@
public class CodeGenerator {
    public static  String packName ="com.doumee";
    // è®¾ç½®è¾“出目录
    public static String rootFileDir = "D:/code/idea/initCode/";
    public static String rootFileDir = "D:/code/idea/initCode/diandongche/";
    public static  String outputDirEntity =rootFileDir+"src/main/java/com/doumee/dao/business/model/"; // è¾“出的代码文件夹路径
    public static  String outputDirMapper = rootFileDir+"src/main/java/com/doumee/dao/business/"; // è¾“出的代码文件夹路径
    public static  String outputDirService =rootFileDir+"src/main/java/com/doumee/service/business/"; // è¾“出的代码文件夹路径
@@ -27,12 +27,12 @@
    public static  String outputDirDb =rootFileDir+"db/"; // è¾“出的代码文件夹路径
    public static void main(String[] args) {
        // é…ç½®æ•°æ®åº“连接
        String url = "jdbc:mysql://192.168.0.211:3306/dmmall_full";
        String url = "jdbc:mysql://192.168.0.211:3306/diandongche";
        String username = "root";
        String password = "Doumee@168";
        String database = "dmmall_full";
        String database = "diandongche";
        List<String> tables = new ArrayList<>();
        tables.add("withdraw_record");
        tables.add("refund");
        for(String tableName : tables){
            // èŽ·å–è¡¨ä¿¡æ¯å¹¶ç”Ÿæˆä»£ç 
server/dmmall_service/src/main/java/com/doumee/service/business/impl/IntegralServiceImpl.java
@@ -355,7 +355,7 @@
        if (pageWrap.getModel().getEndtime() != null) {
            queryWrapper.le(Integral::getCreateDate, pageWrap.getModel().getEndtime());
        }
        queryWrapper.orderByDesc(Integral::getCreateDate);
        queryWrapper.orderByDesc(Integral::getId);
        IPage<Integral> result = integralJoinMapper.selectJoinPage(page, Integral.class, queryWrapper);
        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.MEMBER_FILE).getCode();
server/dmmall_service/src/main/java/com/doumee/service/business/impl/WorkbenchServiceImpl.java
@@ -70,7 +70,7 @@
    private GoodsorderDetailMapper goodsorderDetailMapper;
    @Override
    public List<BusinessDataCountVO> shopRankList10(CountDataDTO param) {
        Date startDate = null,endDate = null;
 /*       Date startDate = null,endDate = null;
        if(param.getYear()!=null && param.getMonth()!=null){
            List<Date> dList = DateUtil.getDatePeriodByYearAndMonth(param.getYear(),param.getMonth()-1);
            startDate = dList.get(0);
@@ -79,7 +79,7 @@
            List<Date> dList = DateUtil.getDatePeriodByYear(param.getYear());
            startDate = dList.get(0);
            endDate = dList.get(1);
        }
        }*/
        //统计订单销量和销售额集合
        List<BusinessDataCountVO> list1 =  goodsorderMapper.selectJoinList(BusinessDataCountVO.class,new MPJLambdaWrapper<Goodsorder>()
                .selectAs(Shop::getName,BusinessDataCountVO::getName)
@@ -87,8 +87,8 @@
                .select("(select count(t.id) )",BusinessDataCountVO::getNum)
                .select("(select sum(t.total_price) )",BusinessDataCountVO::getPrice)
                .leftJoin(Shop.class,Shop::getId,Goodsorder::getDistributionShopId)
                .ge(startDate!=null,Goodsorder::getCreateDate,startDate)
                .ne(endDate!=null,Goodsorder::getCreateDate,endDate)
                .apply(param.getYear()!=null,"YEAR ( t.CREATE_DATE )="+param.getYear() )
                .apply(param.getYear()!=null && param.getMonth()!=null,"MONTH ( t.CREATE_DATE )="+param.getMonth() )
                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey(),Constants.OrderStatus.REFUND.getKey())
                .groupBy(Goodsorder::getDistributionShopId)
@@ -101,7 +101,7 @@
    }
    @Override
    public List<BusinessDataCountVO> goodsRankList10(CountDataDTO param) {
        Date startDate = null,endDate = null;
 /*       Date startDate = null,endDate = null;
        if(param.getYear()!=null && param.getMonth()!=null){
            List<Date> dList = DateUtil.getDatePeriodByYearAndMonth(param.getYear(),param.getMonth()-1);
            startDate = dList.get(0);
@@ -110,7 +110,7 @@
            List<Date> dList = DateUtil.getDatePeriodByYear(param.getYear());
            startDate = dList.get(0);
            endDate = dList.get(1);
        }
        }*/
        //统计订单销量和销售额集合
        List<BusinessDataCountVO> list1 =  goodsorderDetailMapper.selectJoinList(BusinessDataCountVO.class,new MPJLambdaWrapper<GoodsorderDetail>()
                .selectAs(Goods::getName,BusinessDataCountVO::getName)
@@ -118,8 +118,10 @@
                .select("(select  sum(ifnull(t.price,0) * ifnull(t.goods_num,0)))",BusinessDataCountVO::getPrice)
                .leftJoin(Goodsorder.class,Goodsorder::getId,GoodsorderDetail::getOrderId)
                .leftJoin(Goods.class,Goods::getId,GoodsorderDetail::getGoodsId)
                .ge(startDate!=null,Goodsorder::getCreateDate,startDate)
                .ne(endDate!=null,Goodsorder::getCreateDate,endDate)
//                .ge(startDate!=null,Goodsorder::getCreateDate,startDate)
//                .ne(endDate!=null,Goodsorder::getCreateDate,endDate)
                .apply(param.getYear()!=null,"YEAR ( t1.CREATE_DATE )="+param.getYear() )
                .apply(param.getYear()!=null && param.getMonth()!=null,"MONTH ( t1.CREATE_DATE )="+param.getMonth() )
                .eq(Goodsorder::getIsdeleted,Constants.ZERO)
                .in(Goodsorder::getStatus,Constants.OrderStatus.DONE.getKey(),Constants.OrderStatus.REFUND.getKey())
                .groupBy(GoodsorderDetail::getGoodsId)
server/dmmall_service/src/main/resources/templates/controller.vm
@@ -22,7 +22,7 @@
 * @author doumee
 * @date ${nowDate}
 */
@Api(tags = "tableName接口")
@Api(tags = "${tableName}接口")
@RestController
@RequestMapping("/business/${entityNameLower}")
public class ${entityName}Controller extends BaseController {
server/dmmall_service/src/main/resources/templates/db.vm
@@ -1,6 +1,6 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:${entityNameLowerFull}:create', '新建${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:${entityNameLowerFull}:delete', '删除${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:${entityNameLowerFull}:update', '修改${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:${entityNameLowerFull}:query', '查询${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:${entityNameLowerFull}:exportExcel', '导出${tableComment}(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `MODULE`) VALUES ('business:${entityNameLowerFull}:create', '新建${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0,'${tableComment}');
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `MODULE`) VALUES ('business:${entityNameLowerFull}:delete', '删除${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0,'${tableComment}');
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `MODULE`) VALUES ('business:${entityNameLowerFull}:update', '修改${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0,'${tableComment}');
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `MODULE`) VALUES ('business:${entityNameLowerFull}:query', '查询${tableComment}', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0,'${tableComment}');
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`, `MODULE`) VALUES ('business:${entityNameLowerFull}:exportExcel', '导出${tableComment}(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0,'${tableComment}');
server/dmmall_service/src/main/resources/templates/serviceImpl.vm
@@ -94,7 +94,7 @@
               queryWrapper.lambda().eq(pageWrap.getModel().get${column.getJavaName}() != null,${entityName}::get${column.getJavaName}, pageWrap.getModel().get${column.getJavaName}());
            #end
            #if(${column.javaType} =='Date')
             if (pageWrap.getModel().getId() != null) {
        if (pageWrap.getModel().get${column.getJavaName}() != null) {
                  queryWrapper.lambda().ge(${entityName}::get${column.getJavaName}, Utils.Date.getStart(pageWrap.getModel().get${column.getJavaName}()));
                  queryWrapper.lambda().le(${entityName}::get${column.getJavaName}, Utils.Date.getEnd(pageWrap.getModel().get${column.getJavaName}()));
             }
@@ -109,7 +109,6 @@
        }
        return PageData.from(${entityNameLower}Mapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(${entityName} ${entityNameLower}) {
        QueryWrapper<${entityName}> wrapper = new QueryWrapper<>(${entityNameLower});