root 3 лет назад
Родитель
Сommit
9248b99b05
100 измененных файлов с 369 добавлено и 20 удалено
  1. 0 0
      .gitignore
  2. 0 0
      LICENSE.md
  3. 0 0
      README.md
  4. 0 0
      REGION_insert.sql
  5. 0 0
      Vagrantfile
  6. 0 0
      ak-upload-server/ar.upload.ming.conf
  7. 0 0
      ak-upload-server/auth.dev.lua
  8. 0 0
      ak-upload-server/auth.prod.lua
  9. 0 0
      ak-upload-server/server.dev.py
  10. 0 0
      ak-upload-server/server.prod.py
  11. 0 0
      ak-upload-server/token.php
  12. 0 0
      ak-upload-server/upload.py
  13. 0 0
      ak-upload-server/upload_img_filter.conf
  14. 0 0
      ak-upload-server/upload_img_filter.dev.conf
  15. 0 0
      ak-upload-server/upload_img_filter.prod.conf
  16. 0 0
      ak-upload-server/venv/bin/activate
  17. 0 0
      ak-upload-server/venv/bin/activate.csh
  18. 0 0
      ak-upload-server/venv/bin/activate.fish
  19. 0 0
      ak-upload-server/venv/bin/easy_install
  20. 0 0
      ak-upload-server/venv/bin/easy_install-3.6
  21. 0 0
      ak-upload-server/venv/bin/pip
  22. 0 0
      ak-upload-server/venv/bin/pip3
  23. 0 0
      ak-upload-server/venv/bin/pip3.6
  24. 0 0
      ak-upload-server/venv/bin/python
  25. 0 0
      ak-upload-server/venv/bin/python3
  26. 0 0
      ak-upload-server/venv/bin/python3.6
  27. 0 0
      ak-upload-server/venv/lib/python3.6/site-packages/easy-install.pth
  28. 0 0
      ak-upload-server/venv/lib/python3.6/site-packages/setuptools-28.8.0-py3.6.egg
  29. 0 0
      ak-upload-server/venv/lib/python3.6/site-packages/setuptools.pth
  30. 0 0
      ak-upload-server/venv/pyvenv.cfg
  31. 1 1
      backendApi/modules/v1/controllers/ShopController.php
  32. 42 0
      backendApi/modules/v1/models/lists/shop/GoodsList.php
  33. 51 0
      backendApi/modules/v1/models/lists/shop/PackageList.php
  34. 111 7
      backendEle/src/views/shop/index.vue
  35. 9 3
      backendEle/src/views/shop/package-add.vue
  36. 66 6
      backendEle/src/views/shop/package.vue
  37. 0 0
      codeception.yml
  38. 2 0
      common/components/SwooleAsyncTimer.php
  39. 0 0
      common/helpers/PayStack.php
  40. 65 0
      common/helpers/goods/GoodsTimes.php
  41. 0 0
      common/models/ShopGoods.php
  42. 14 2
      common/models/forms/DecPackageForm.php
  43. 8 1
      common/models/forms/ShopGoodsForm.php
  44. 0 0
      composer.json
  45. 0 0
      composer.lock
  46. 0 0
      frontendEle/src/views/shop/dec-order-list.vue
  47. 0 0
      frontendEle/src/views/shop/index.vue
  48. 0 0
      frontendEle/src/views/shop/order-list.vue
  49. 0 0
      frontendEle/src/views/shop/order.vue
  50. 0 0
      frontendEle/src/views/shop/reconsume-order.vue
  51. 0 0
      frontendEle/src/views/shop/reconsume.vue
  52. 0 0
      frontendEle/src/views/user/dec.vue
  53. 0 0
      frontendEle/src/views/user/id-card.vue_bak
  54. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141152188888.csv
  55. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141155049572.csv
  56. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141155536642.csv
  57. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141156356017.csv
  58. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141300385990.csv
  59. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141301538113.csv
  60. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141303118543.csv
  61. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141304424939.csv
  62. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141305068319.csv
  63. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141305247339.csv
  64. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141306595670.csv
  65. 0 0
      home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141313402026.csv
  66. 0 0
      init
  67. 0 0
      init.bat
  68. 0 0
      log_db.sql
  69. 0 0
      loopNetworkParentDo_error.txt
  70. 0 0
      mysql_db_yyj.sql
  71. 0 0
      requirements.php
  72. 0 0
      shop_db.sql
  73. 0 0
      sql/2020_07/AR_CONFIG.sql
  74. 0 0
      sql/2020_07/AR_DEC_ROLE.sql
  75. 0 0
      sql/2020_07/AR_EMPLOY_LEVEL.sql
  76. 0 0
      sql/2020_07/AR_ORDER_GOODS_SHOP.sql
  77. 0 0
      sql/2020_07/AR_ORDER_SHOP.sql
  78. 0 0
      sql/2020_07/change_net.sql
  79. 0 0
      sql/2020_07/excelImport/AR_EXCEL_ORDER_SHOP.sql
  80. 0 0
      sql/2020_07/excelImport/add.sql
  81. 0 0
      sql/2020_08/AR_CALC_BONUS_XF.sql
  82. 0 0
      sql/2020_08/AR_CONFIG.sql
  83. 0 0
      sql/2020_08/AR_USER.sql
  84. 0 0
      sql/2020_08/moveNet/update.sql
  85. 0 0
      sql/2020_08/partBdFx.sql
  86. 0 0
      sql/2020_10/AR_SCORE_MONTH.sql
  87. 0 0
      sql/2020_10/scoreUpdate.sql
  88. 0 0
      sql/2020_11/AR_CALC_BONUS_FW.sql
  89. 0 0
      sql/2020_11/AR_DEC_ROLE.sql
  90. 0 0
      sql/2020_11/AR_DEC_ROLE_LOG.sql
  91. 0 0
      sql/2020_11/decRole.sql
  92. 0 0
      sql/2020_12/AR_CALC_BONUS_VIP.sql
  93. 0 0
      sql/2020_12/AR_ORDER_DEC.sql
  94. 0 0
      sql/2020_12/AR_ORDER_GOODS_DEC.sql
  95. 0 0
      sql/2020_12/AR_USER_PERF_MONTH_UPDATE.sql
  96. 0 0
      sql/2020_12/bonusVip.sql
  97. 0 0
      sql/2020_12/update.sql
  98. 0 0
      sql/2021-10/gongzuoshi.sql
  99. 0 0
      sql/2021_01/jxStandard/AR_CALC_BONUS_STANDARD.sql
  100. 0 0
      sql/2021_01/jxStandard/AR_ORDER_STANDARD.sql

+ 0 - 0
.gitignore


+ 0 - 0
LICENSE.md



+ 0 - 0
REGION_insert.sql


+ 0 - 0
Vagrantfile


+ 0 - 0
ak-upload-server/ar.upload.ming.conf


+ 0 - 0
ak-upload-server/auth.dev.lua


+ 0 - 0
ak-upload-server/auth.prod.lua


+ 0 - 0
ak-upload-server/server.dev.py


+ 0 - 0
ak-upload-server/server.prod.py


+ 0 - 0
ak-upload-server/token.php


+ 0 - 0
ak-upload-server/upload.py


+ 0 - 0
ak-upload-server/upload_img_filter.conf


+ 0 - 0
ak-upload-server/upload_img_filter.dev.conf


+ 0 - 0
ak-upload-server/upload_img_filter.prod.conf


+ 0 - 0
ak-upload-server/venv/bin/activate


+ 0 - 0
ak-upload-server/venv/bin/activate.csh


+ 0 - 0
ak-upload-server/venv/bin/activate.fish


+ 0 - 0
ak-upload-server/venv/bin/easy_install


+ 0 - 0
ak-upload-server/venv/bin/easy_install-3.6


+ 0 - 0
ak-upload-server/venv/bin/pip


+ 0 - 0
ak-upload-server/venv/bin/pip3


+ 0 - 0
ak-upload-server/venv/bin/pip3.6


+ 0 - 0
ak-upload-server/venv/bin/python


+ 0 - 0
ak-upload-server/venv/bin/python3


+ 0 - 0
ak-upload-server/venv/bin/python3.6


+ 0 - 0
ak-upload-server/venv/lib/python3.6/site-packages/easy-install.pth


+ 0 - 0
ak-upload-server/venv/lib/python3.6/site-packages/setuptools-28.8.0-py3.6.egg


+ 0 - 0
ak-upload-server/venv/lib/python3.6/site-packages/setuptools.pth


+ 0 - 0
ak-upload-server/venv/pyvenv.cfg


+ 1 - 1
backendApi/modules/v1/controllers/ShopController.php

@@ -263,7 +263,7 @@ class ShopController extends BaseController {
             });
         }
         $package = DeclarationPackage::findOneAsArray('ID=:ID', [':ID' => $id]);
-        return static::notice(['id' => $package['ID'], 'packageName' => $package['PACKAGE_NAME'],'packageNo' => $package['PACKAGE_NO'], 'amount' => $package['AMOUNT'], 'amountPv' => $package['PV'], 'levelId' => $package['LEVEL_ID'], 'packageContent' => $package['PACKAGE_CONTENT']]);
+        return static::notice(['id' => $package['ID'], 'packageName' => $package['PACKAGE_NAME'],'packageNo' => $package['PACKAGE_NO'], 'amount' => $package['AMOUNT'], 'amountPv' => $package['PV'], 'levelId' => $package['LEVEL_ID'], 'packageContent' => $package['PACKAGE_CONTENT'],'storenums' => $package['STORE_NUMS'],'statusdate'=>$package['STATUS_DATE'],'packagedate'=>$package['PACKAGE_DATE'],'packagestatusdate'=>$package['PACKAGE_STATUS_DATE']]);
     }
 
     /**

+ 42 - 0
backendApi/modules/v1/models/lists/shop/GoodsList.php

@@ -5,6 +5,7 @@ use common\helpers\Tool;
 use common\libs\dataList\DataListInterface;
 use common\models\ShopGoods;
 use common\libs\dataList\column\DateTime;
+use common\libs\dataList\column\YesNo;
 
 class GoodsList extends \common\libs\dataList\DataList implements DataListInterface
 {
@@ -155,6 +156,47 @@ class GoodsList extends \common\libs\dataList\DataList implements DataListInterf
                     },
                     'headerOther' => ['width' => '190'],
                 ],
+                'STATUS_DATE' => [
+                    'header' => '是否开启限时',
+                    'value' => function($row) {
+                        return (new YesNo([
+                            'value' => $row['STATUS_DATE'],
+                        ]))->result();
+                    },
+                    'headerOther' => function($row) {
+                        return [
+                            'width' => '120',
+                        ];
+                    },
+                    'valueOther' => function($row) {
+                        return [
+                            'tag'=>['type'=>(isset($row['STATUS_DATE']) && $row['STATUS_DATE'] )? 'success' : 'info', 'size' => 'small']
+                        ];
+                    },
+                ],
+                'GOODS_STATUS_DATE' => [
+                    'header' => '限时状态',
+                    'headerOther' => [
+                        'width' => '150',
+                    ],
+                    'value' => function ($row) {
+                        return $row['GOODS_STATUS_DATE'] == 1 ? '上架' : '下架';
+                    },
+                    'valueOther' => function ($row) {
+                        return [
+                            'tag' => ['type'=>(isset($row['GOODS_STATUS_DATE']) && $row['GOODS_STATUS_DATE'] )? 'success' : 'info', 'size' => 'small']
+                        ];
+                    },
+                ],
+                'GOODS_DATE' => [
+                    'header' => '限时时间',
+                    'value' => function ($row) {
+                        return (new DateTime([
+                            'value' => ($row['GOODS_DATE']),
+                        ]))->result();
+                    },
+                    'headerOther' => ['width' => '190'],
+                ],
             ];
         }
         return $this->columns;

+ 51 - 0
backendApi/modules/v1/models/lists/shop/PackageList.php

@@ -3,6 +3,7 @@ namespace backendApi\modules\v1\models\lists\shop;
 
 use common\helpers\Tool;
 use common\libs\dataList\column\DateTime;
+use common\libs\dataList\column\YesNo;
 use common\libs\dataList\DataListInterface;
 use common\models\DeclarationLevel;
 use common\models\DeclarationPackage;
@@ -91,6 +92,47 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                         'width' => '110',
                     ],
                 ],
+                'STATUS_DATE' => [
+                    'header' => '是否开启限时',
+                    'value' => function($row) {
+                        return (new YesNo([
+                            'value' => $row['STATUS_DATE'],
+                        ]))->result();
+                    },
+                    'headerOther' => function($row) {
+                        return [
+                            'width' => '120',
+                        ];
+                    },
+                    'valueOther' => function($row) {
+                        return [
+                            'tag'=>['type'=>(isset($row['STATUS_DATE']) && $row['STATUS_DATE'] )? 'success' : 'info', 'size' => 'small']
+                        ];
+                    },
+                ],
+                'PACKAGE_STATUS_DATE' => [
+                    'header' => '限时状态',
+                    'headerOther' => [
+                        'width' => '150',
+                    ],
+                    'value' => function ($row) {
+                        return $row['PACKAGE_STATUS_DATE'] == 1 ? '上架' : '下架';
+                    },
+                    'valueOther' => function ($row) {
+                        return [
+                            'tag' => ['type'=>(isset($row['PACKAGE_STATUS_DATE']) && $row['PACKAGE_STATUS_DATE'] )? 'success' : 'info', 'size' => 'small']
+                        ];
+                    },
+                ],
+                'PACKAGE_DATE' => [
+                    'header' => '限时时间',
+                    'value' => function ($row) {
+                        return (new DateTime([
+                            'value' => ($row['PACKAGE_DATE']),
+                        ]))->result();
+                    },
+                    'headerOther' => ['width' => '190'],
+                ],
                 'PACKAGE_CONTENT' => [
                     'header' => 'Kit products',//套餐内容
                     'headerOther' => ['width' => '290'],
@@ -104,6 +146,15 @@ class PackageList extends \common\libs\dataList\DataList implements DataListInte
                     },
                     'headerOther' => ['width' => '190'],
                 ],
+                'UPDATED_AT' => [
+                    'header' => '更新时间',
+                    'value' => function ($row) {
+                        return (new DateTime([
+                            'value' => $row['UPDATED_AT'],
+                        ]))->result();
+                    },
+                    'headerOther' => ['width' => '190'],
+                ],
             ];
         }
         return $this->columns;

+ 111 - 7
backendEle/src/views/shop/index.vue

@@ -28,7 +28,8 @@
                                                   v-show="permission.hasPermission(`shop/goods-delete`)">Delete<!-- 删除数据 -->
                                 </el-dropdown-item>
                                 <el-dropdown-item command="goods-edit" @click.native="handleGoodUp(scope.row.ID)">On sale<!-- 商品上架 --> </el-dropdown-item>
-                                 <el-dropdown-item command="goods-edit" @click.native="handleGoodDown(scope.row.ID)">Sold out<!-- 商品下架 --> </el-dropdown-item>
+                                 <el-dropdown-item command="goods-edit" @click.native="handleGoodDown(scope.row.ID)">Sold out<!-- 商品下架 --> </el-dropdown-item>
+								 <el-dropdown-item command="goods-edit" @click.native="handleEditShowGoodsTimes(scope.row)">商品限时 </el-dropdown-item>
                             </el-dropdown-menu>
                         </el-dropdown>
                     </template>
@@ -142,7 +143,49 @@
                 <el-button @click="dialogEditFormVisible = false">Cancel<!-- 取 消 --></el-button>
                 <el-button type="primary" @click.native="handleEdit">Edit<!-- 修 改 --></el-button>
             </div>
-        </el-dialog>
+        </el-dialog>
+		
+		<el-dialog title="商品限时" :visible.sync="dialogEditFormVisibleGoodsTimes">
+		    <el-form :model="form" label-width="250px" class="form-dialog" v-loading="dialogEditLoadingGoodsTimes">
+		
+		
+		            <el-form-item label="是否限时">
+		                  <el-switch
+		                    v-model="form.statusdate"
+		                    active-value="1"
+		                    inactive-value="0">
+		                  </el-switch>
+		            </el-form-item>
+		            <transition name="el-zoom-in-top">
+		            <el-form-item label="限时时间" v-show='form.statusdate==1?true:false'>
+		                    <el-date-picker
+		                      v-model="form.goodsdate"
+		                      type="datetime"
+		                      placeholder="选择日期时间"
+		                      value-format="timestamp"
+		                      popper-class='goodsdate'>
+		                    </el-date-picker>
+							
+		
+		
+		            </el-form-item>
+		            </transition>
+		            <transition name="el-zoom-in-top">
+		            <el-form-item label="限时类型" v-show='form.statusdate==1?true:false'>
+		
+		                 <el-radio v-model="form.goodsstatusdate" label="0" border>下架</el-radio>
+		                 <el-radio v-model="form.goodsstatusdate" label="1" border>上架</el-radio>
+		            </el-form-item>
+		            </transition>
+		
+		
+		    </el-form>
+		    <div slot="footer" class="dialog-footer">
+		        <el-button @click="dialogEditFormVisibleGoodsTimes = false">取 消</el-button>
+		        <el-button type="primary" @click.native="handleEdit">修 改</el-button>
+		    </div>
+		</el-dialog>
+		
     </div>
 </template>
 
@@ -186,7 +229,9 @@
                 value:[],
                 selectedIds:'',
                 dialogEditFormVisible: false,
-                dialogEditLoading: false,
+                dialogEditLoading: false,
+				dialogEditFormVisibleGoodsTimes: false,
+				dialogEditLoadingGoodsTimes: false,
                 form:{
                     // sellType:[],
                     goodsName:'',
@@ -206,7 +251,10 @@
                     textarea:'',
                     sellDiscount:'',
                     categoryType: '',
-                    sellType: 1,
+                    sellType: 1,
+					statusdate:'',
+					goodsstatusdate:'',
+					goodsdate:'',
                 },
                 submitButtonStat: false,
                 goodsType:[],
@@ -297,7 +345,10 @@
                     vueObj.form.sort=response.goodsInfo.SORT
                     vueObj.form.id=response.goodsInfo.ID
                     vueObj.form.cover=response.goodsInfo.COVER
-                    vueObj.form.categoryType=parseInt(response.goodsInfo.CATEGORY_TYPE)
+                    vueObj.form.categoryType=parseInt(response.goodsInfo.CATEGORY_TYPE)
+					vueObj.form.statusdate=response.goodsInfo.STATUS_DATE
+					vueObj.form.goodsstatusdate=response.goodsInfo.GOODS_STATUS_DATE
+					vueObj.form.goodsdate=response.goodsInfo.GOODS_DATE * 1000
                     // vueObj.form.sellType=vueObj.form.sellType.map((item,index)=>{
                     //   return response.goodsInfo.SELL_TYPE.some(val=>(index+1).toString()==val)
                     //   })
@@ -305,9 +356,62 @@
                     this.$forceUpdate()
 
                 })
-            },
+            },
+			
+			handleEditShowGoodsTimes(row) {
+			    this.dialogEditLoadingGoodsTimes = true
+			    this.auditId = row.ID
+			    this.dialogEditFormVisibleGoodsTimes = true
+			    let vueObj = this
+			    network.getData('shop/goods-edit', {id: this.auditId}).then(response => {
+			        vueObj.dialogEditLoadingGoodsTimes = false
+			        vueObj.goodsType=response.goodsType
+			        vueObj.categoryType = response.categoryType
+			
+			        let gift=response.goodsInfo.GIFT_TYPE;
+			        let gift_type=response.giftType;
+			
+			        let giftType=[];
+			        if(gift.length>0){
+			            for(let i in gift_type){
+			                giftType.push({key:i,name:gift_type[i].name,checked:false})
+			                gift.map((v,k)=>{
+			                    if(v==i){
+			                        giftType[i-1].checked=true;
+			                    }
+			                })
+			            }
+			        }
+			        vueObj.GiftTypeArr=giftType
+
+			        vueObj.sell_type=response.goodsInfo.SELL_TYPE;
+			        vueObj.form.goodsName=response.goodsInfo.GOODS_NAME
+			        vueObj.form.sellDiscount=response.goodsInfo.SELL_DISCOUNT
+			        vueObj.form.goodsNo=response.goodsInfo.GOODS_NO
+			        vueObj.form.type=response.goodsInfo.TYPE
+			        vueObj.form.unit=response.goodsInfo.UNIT
+			        vueObj.form.marketPrice=response.goodsInfo.MARKET_PRICE
+			        vueObj.form.sellPrice=response.goodsInfo.SELL_PRICE
+			        vueObj.form.pricePv=response.goodsInfo.PRICE_PV
+			        vueObj.form.point=response.goodsInfo.POINT
+			        vueObj.form.storeNums=response.goodsInfo.STORE_NUMS
+			        vueObj.form.content=response.goodsInfo.CONTENT
+			        vueObj.form.sort=response.goodsInfo.SORT
+			        vueObj.form.id=response.goodsInfo.ID
+			        vueObj.form.cover=response.goodsInfo.COVER
+			        vueObj.form.categoryType=parseInt(response.goodsInfo.CATEGORY_TYPE)
+					vueObj.form.statusdate=response.goodsInfo.STATUS_DATE
+					vueObj.form.goodsstatusdate=response.goodsInfo.GOODS_STATUS_DATE
+					vueObj.form.goodsdate=response.goodsInfo.GOODS_DATE * 1000
+	
+			
+			        this.$forceUpdate()
+			
+			    })
+			},
             handleEdit() {
-                this.dialogEditFormVisible = false
+                this.dialogEditFormVisible = false
+				this.dialogEditFormVisibleGoodsTimes = false
                 this.$message({
                     message: 'Modifying data',//正在修改数据
                     type: 'info'

+ 9 - 3
backendEle/src/views/shop/package-add.vue

@@ -23,7 +23,10 @@
                 </el-form-item>
                 <el-form-item label="Kit products"><!-- 套餐内容 -->
                     <el-input v-model="form.packageContent"></el-input>
-                </el-form-item>
+                </el-form-item>
+				<el-form-item label="套餐库存">
+				    <el-input oninput="value=value.replace(/[^\d]/g,'')" v-model="form.storenums"></el-input>
+				</el-form-item>
 
 
                 <el-form-item>
@@ -52,7 +55,9 @@
                     amount:'',
                     amountPv:'',
                     levelId:'',
-                    packageContent:''
+                    packageContent:'',
+					storenums:'',
+					
                 },
                 submitButtonStat: false,
                 allDecLevel: baseInfo.decLevels(),
@@ -69,7 +74,8 @@
                     amount: this.form.amount,
                     amountPv: this.form.amountPv,
                     levelId: this.form.levelId,
-                    packageContent: this.form.packageContent,
+                    packageContent: this.form.packageContent,
+					storenums:this.form.storenums,
 
                 }
 

+ 66 - 6
backendEle/src/views/shop/package.vue

@@ -31,7 +31,9 @@
                                                   v-show="permission.hasPermission(`shop/goods-delete`)">Delete<!-- 删除数据 -->
                                 </el-dropdown-item>
                                 <el-dropdown-item command="goods-edit" @click.native="handleGoodUp(scope.row.ID)">On sale<!-- 商品上架 --> </el-dropdown-item>
-                                <el-dropdown-item command="goods-edit" @click.native="handleGoodDown(scope.row.ID)">Sold out<!-- 商品下架 --> </el-dropdown-item>
+                                <el-dropdown-item command="goods-edit" @click.native="handleGoodDown(scope.row.ID)">Sold out<!-- 商品下架 --> </el-dropdown-item>
+								<el-dropdown-item command="package-get" @click.native="handleEditShowGoodsTimes(scope.row)">套餐限时
+								</el-dropdown-item>
                             </el-dropdown-menu>
                         </el-dropdown>
                     </template>
@@ -69,13 +71,56 @@
                 </el-form-item>
                 <el-form-item label="Kit products"><!-- 套餐内容 -->
                     <el-input v-model="form.packageContent"></el-input>
-                </el-form-item>
+                </el-form-item>
+				<el-form-item label="套餐库存">
+				    <el-input oninput="value=value.replace(/[^\d]/g,'')" v-model="form.storenums"></el-input>
+				</el-form-item>
             </el-form>
             <div slot="footer" class="dialog-footer">
                 <el-button @click="dialogEditFormVisible = false">Cancel<!-- 取 消 --></el-button>
                 <el-button type="primary" @click.native="handleEdit">Edit<!-- 修 改 --></el-button>
             </div>
-        </el-dialog>
+        </el-dialog>
+		
+		
+		<el-dialog title="限时套餐" :visible.sync="dialogEditFormVisibleGoodsTimes">
+		    <el-form :model="form" label-width="250px" class="form-dialog" v-loading="dialogEditLoadingGoodsTimes">
+		
+		       <el-form-item label="是否限时">
+		             <el-switch
+		               v-model="form.statusdate"
+		               active-value="1"
+		               inactive-value="0">
+		             </el-switch>
+		       </el-form-item>
+		       <transition name="el-zoom-in-top">
+		       <el-form-item label="限时时间" v-show='form.statusdate==1?true:false'>
+		               <el-date-picker
+		                 v-model="form.packagedate"
+		                 type="datetime"
+		                 placeholder="选择日期时间"
+		                 value-format="timestamp"
+		                 popper-class='goodsdate'>
+		               </el-date-picker>
+		       </el-form-item>
+		       </transition>
+		       <transition name="el-zoom-in-top">
+		       <el-form-item label="限时类型" v-show='form.statusdate==1?true:false'>
+		
+		            <el-radio v-model="form.packagestatusdate" label="0" border>下架</el-radio>
+		            <el-radio v-model="form.packagestatusdate" label="1" border>上架</el-radio>
+		       </el-form-item>
+		       </transition>
+		
+		
+		    </el-form>
+		    <div slot="footer" class="dialog-footer">
+		        <el-button @click="dialogEditFormVisibleGoodsTimes = false">取 消</el-button>
+		        <el-button type="primary" @click.native="handleEdit">修 改</el-button>
+		    </div>
+		</el-dialog>
+		
+		
     </div>
 </template>
 
@@ -116,7 +161,9 @@
                 statuses: null,
                 filterData: null,
                 dialogEditFormVisible: false,
-                dialogEditLoading: false,
+                dialogEditLoading: false,
+				dialogEditFormVisibleGoodsTimes: false,
+				dialogEditLoadingGoodsTimes: false,
                 allDecLevel: baseInfo.decLevels(),
                 form: {
                     selectedIds: [],
@@ -154,9 +201,22 @@
                     vueObj.dialogEditLoading = false
                     vueObj.form = response
                 })
-            },
+            },
+			handleEditShowGoodsTimes(row) {
+			    this.dialogEditLoadingGoodsTimes = true
+			    this.auditId = row.ID
+			    this.dialogEditFormVisibleGoodsTimes = true
+			    let vueObj = this
+			    network.getData('shop/package-get', {id: this.auditId}).then(response => {
+			        console.log(response.packagedate*1000)
+			        vueObj.dialogEditLoadingGoodsTimes = false
+			        vueObj.form = response
+					vueObj.form.packagedate = response.packagedate*1000
+			    })
+			},
             handleEdit() {
-                this.dialogEditFormVisible = false
+                this.dialogEditFormVisible = false
+				this.dialogEditFormVisibleGoodsTimes = false
                 this.$message({
                     message: 'Modifying data',//正在修改数据
                     type: 'info'

+ 0 - 0
codeception.yml


+ 2 - 0
common/components/SwooleAsyncTimer.php

@@ -15,6 +15,7 @@ use common\helpers\bonus\AutoClosePeriod;
 use common\helpers\Cache;
 use common\helpers\Date;
 use common\helpers\Tool;
+use common\helpers\goods\GoodsTimes;
 use common\libs\logging\system\ApiSystem;
 use common\libs\logging\system\AsyncSystem;
 use common\libs\taskQueue\Queue;
@@ -48,6 +49,7 @@ class SwooleAsyncTimer extends SwooleAsyncTimerComponent implements SocketInterf
     public function timerCallback($timerId, $server){
         // 自动封期
         AutoClosePeriod::instance()->autoClose();
+        GoodsTimes::instance()->goodstime();
         // 自动执行任务队列中的任务
         Queue::instance()->consumeTask();
 

+ 0 - 0
common/helpers/PayStack.php


+ 65 - 0
common/helpers/goods/GoodsTimes.php

@@ -0,0 +1,65 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: leo
+ * Date: 2018/5/18
+ * Time: 下午4:53
+ */
+
+namespace common\helpers\goods;
+
+
+use common\helpers\Cache;
+use common\helpers\Date;
+use common\models\DeclarationPackage;
+use common\models\forms\PeriodForm;
+use common\models\Period;
+use common\models\ShopGoods;
+use yii\base\BaseObject;
+use yii\base\StaticInstanceTrait;
+class GoodsTimes extends BaseObject
+{
+    use StaticInstanceTrait;
+
+    public function goodstime(){
+        $goods = ShopGoods::findAllAsArray('STATUS_DATE=1');
+
+
+        foreach ($goods as $k => $v){
+            $goodsdata = ShopGoods::find()->where(['ID' => $goods[$k]['ID']])->one();
+            
+            if (Date::nowTime()>=($goodsdata->GOODS_DATE)){
+                if ($goodsdata->GOODS_STATUS_DATE == 0){
+                    $goodsdata->STATUS = 0;
+                    $goodsdata->UPDATED_AT = Date::nowTime();
+                    $goodsdata->STATUS_DATE = 0;
+                    $goodsdata->update();
+                }else{
+                    $goodsdata->STATUS = 1;
+                    $goodsdata->UPDATED_AT = Date::nowTime();
+                    $goodsdata->STATUS_DATE = 0;
+                    $goodsdata->update();
+                }
+            }
+        }
+        $package = DeclarationPackage::findAllAsArray('STATUS_DATE=1');
+        foreach ($package as $a => $b){
+            $packagedata = DeclarationPackage::find()->where(['ID' => $package[$a]['ID']])->one();
+            if (Date::nowTime()>=($packagedata->PACKAGE_DATE)){
+                if ($packagedata->PACKAGE_STATUS_DATE == 0){
+                    $packagedata->STATUS = 0;
+                    $packagedata->UPDATED_AT = Date::nowTime();
+                    $packagedata->STATUS_DATE = 0;
+                    $packagedata->update();
+                }else{
+                    $packagedata->STATUS = 1;
+                    $packagedata->UPDATED_AT = Date::nowTime();
+                    $packagedata->STATUS_DATE = 0;
+                    $packagedata->update();
+                }
+            }
+        }
+
+
+    }
+}

+ 0 - 0
common/models/ShopGoods.php


+ 14 - 2
common/models/forms/DecPackageForm.php

@@ -21,6 +21,10 @@ class DecPackageForm extends Model
     public $levelId;
     public $packageContent;
     public $status;
+    public $storenums;
+    public $statusdate;
+    public $packagedate;
+    public $packagestatusdate;
 
     /**
      * @inheritdoc
@@ -34,6 +38,8 @@ class DecPackageForm extends Model
             [['id'], 'exist', 'targetClass'=>DeclarationPackage::class, 'targetAttribute'=>'ID'],
             [['amount','amountPv'], 'price'],
             [['selectedIds'], 'isSelected'],
+            [['storenums'],'number'],
+            [['statusdate'],'match','pattern'=>'/^[0-1]{1,1}$/']
         ];
     }
 
@@ -48,6 +54,7 @@ class DecPackageForm extends Model
             'amountPv' => '套餐BV',
             'levelId' => '所属报单级别',
             'packageContent' => '套餐详情',
+            'storenums' => '套餐库存',
         ];
     }
 
@@ -59,8 +66,8 @@ class DecPackageForm extends Model
     {
         $parentScenarios =  parent::scenarios();
         $customScenarios = [
-            'add' => ['packageName','packageNo','amount','amountPv','levelId', 'packageContent'],
-            'edit' => ['id','packageName','packageNo','amount','amountPv', 'levelId', 'packageContent'],
+            'add' => ['packageName','packageNo','amount','amountPv','levelId', 'packageContent','storenums'],
+            'edit' => ['id','packageName','packageNo','amount','amountPv', 'levelId', 'packageContent','storenums','statusdate','packagedate','packagestatusdate'],
             'changeStatus' => ['selectedIds', 'status'],
         ];
         return array_merge($parentScenarios, $customScenarios);
@@ -95,6 +102,9 @@ class DecPackageForm extends Model
             $model = DeclarationPackage::findOne(['ID'=>$this->id]);
             $model->UPDATE_ADMIN = Admin::getAdminNameById(\Yii::$app->user->id);
             $model->UPDATED_AT = Date::nowTime();
+            $model->STATUS_DATE = $this->statusdate;
+            $model->PACKAGE_STATUS_DATE = $this->packagestatusdate;
+            $model->PACKAGE_DATE = $this->packagedate / 1000;
         } else {
             $this->addError('id', '提交场景不存在');
             return null;
@@ -105,6 +115,8 @@ class DecPackageForm extends Model
         $model->PV = $this->amountPv;
         $model->LEVEL_ID = $this->levelId;
         $model->PACKAGE_CONTENT = $this->packageContent;
+        $model->STORE_NUMS = $this->storenums;
+
         if($model->save()){
             return $model;
         } else {

+ 8 - 1
common/models/forms/ShopGoodsForm.php

@@ -32,6 +32,9 @@ class ShopGoodsForm extends Model
     public $sort;
     public $status;
     public $categoryType;
+    public $statusdate;
+    public $goodsstatusdate;
+    public $goodsdate;
 
     private $_model;
 
@@ -57,6 +60,7 @@ class ShopGoodsForm extends Model
             [['selectedIds'], 'isSelected'],
             [['sort'], 'isSort'],
             [['sellDiscount'], 'isDiscount'],
+            [['statusdate','goodsstatusdate'],'match','pattern'=>'/^[0-1]{1,1}$/']
         ];
     }
 
@@ -92,7 +96,7 @@ class ShopGoodsForm extends Model
         $parentScenarios =  parent::scenarios();
         $customScenarios = [
             'add' => ['goodsName','sellDiscount','giftType', 'sellType','goodsNo','unit','sellPrice','marketPrice','pricePv','storeNums', 'content','sort','cover', 'categoryType'],
-            'edit' => ['id','goodsName','sellDiscount','giftType', 'sellType','goodsNo','unit','sellPrice','marketPrice','pricePv', 'storeNums', 'content','sort','cover', 'categoryType'],
+            'edit' => ['id','goodsName','sellDiscount','giftType', 'sellType','goodsNo','unit','sellPrice','marketPrice','pricePv', 'storeNums', 'content','sort','cover', 'categoryType','statusdate','goodsstatusdate','goodsdate'],
             'changeStatus' => ['selectedIds', 'status'],
         ];
         return array_merge($parentScenarios, $customScenarios);
@@ -249,6 +253,9 @@ class ShopGoodsForm extends Model
             $model->SORT = $this->sort;
             $model->UPDATED_AT = Date::nowTime();
             $model->CATEGORY_TYPE = $this->categoryType;
+            $model->STATUS_DATE = $this->statusdate;
+            $model->GOODS_STATUS_DATE = $this->goodsstatusdate;
+            $model->GOODS_DATE = $this->goodsdate / 1000;
             if (!$model->save()) {
                 throw new Exception(Form::formatErrorsForApi($model->getErrors()));
             }

+ 0 - 0
composer.json


+ 0 - 0
composer.lock


+ 0 - 0
frontendEle/src/views/shop/dec-order-list.vue


+ 0 - 0
frontendEle/src/views/shop/index.vue


+ 0 - 0
frontendEle/src/views/shop/order-list.vue


+ 0 - 0
frontendEle/src/views/shop/order.vue


+ 0 - 0
frontendEle/src/views/shop/reconsume-order.vue


+ 0 - 0
frontendEle/src/views/shop/reconsume.vue


+ 0 - 0
frontendEle/src/views/user/dec.vue


+ 0 - 0
frontendEle/src/views/user/id-card.vue_bak


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141152188888.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141155049572.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141155536642.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141156356017.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141300385990.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141301538113.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141303118543.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141304424939.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141305068319.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141305247339.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141306595670.csv


+ 0 - 0
home/david/wwwroot/gitproject/eklast/ekdscode/backendApi/web/upload/excel_export/227/83/202112141313402026.csv




+ 0 - 0
log_db.sql


+ 0 - 0
loopNetworkParentDo_error.txt


+ 0 - 0
mysql_db_yyj.sql


+ 0 - 0
requirements.php


+ 0 - 0
shop_db.sql


+ 0 - 0
sql/2020_07/AR_CONFIG.sql


+ 0 - 0
sql/2020_07/AR_DEC_ROLE.sql


+ 0 - 0
sql/2020_07/AR_EMPLOY_LEVEL.sql


+ 0 - 0
sql/2020_07/AR_ORDER_GOODS_SHOP.sql


+ 0 - 0
sql/2020_07/AR_ORDER_SHOP.sql


+ 0 - 0
sql/2020_07/change_net.sql


+ 0 - 0
sql/2020_07/excelImport/AR_EXCEL_ORDER_SHOP.sql


+ 0 - 0
sql/2020_07/excelImport/add.sql


+ 0 - 0
sql/2020_08/AR_CALC_BONUS_XF.sql


+ 0 - 0
sql/2020_08/AR_CONFIG.sql


+ 0 - 0
sql/2020_08/AR_USER.sql


+ 0 - 0
sql/2020_08/moveNet/update.sql


+ 0 - 0
sql/2020_08/partBdFx.sql


+ 0 - 0
sql/2020_10/AR_SCORE_MONTH.sql


+ 0 - 0
sql/2020_10/scoreUpdate.sql


+ 0 - 0
sql/2020_11/AR_CALC_BONUS_FW.sql


+ 0 - 0
sql/2020_11/AR_DEC_ROLE.sql


+ 0 - 0
sql/2020_11/AR_DEC_ROLE_LOG.sql


+ 0 - 0
sql/2020_11/decRole.sql


+ 0 - 0
sql/2020_12/AR_CALC_BONUS_VIP.sql


+ 0 - 0
sql/2020_12/AR_ORDER_DEC.sql


+ 0 - 0
sql/2020_12/AR_ORDER_GOODS_DEC.sql


+ 0 - 0
sql/2020_12/AR_USER_PERF_MONTH_UPDATE.sql


+ 0 - 0
sql/2020_12/bonusVip.sql


+ 0 - 0
sql/2020_12/update.sql


+ 0 - 0
sql/2021-10/gongzuoshi.sql


+ 0 - 0
sql/2021_01/jxStandard/AR_CALC_BONUS_STANDARD.sql


+ 0 - 0
sql/2021_01/jxStandard/AR_ORDER_STANDARD.sql


Некоторые файлы не были показаны из-за большого количества измененных файлов