From 53fa6dcf2c37a970a2bca076baa23f786341b36f Mon Sep 17 00:00:00 2001 From: 李忠强 <1354905998@qq.com> Date: Fri, 14 Jan 2022 18:52:53 +0800 Subject: [PATCH] 更新 --- application/admin/controller/Activity.php | 40 ++++++++++++++++++++++++++++++++++++++++ application/admin/controller/litestore/Litestoregoods.php | 1 + application/admin/lang/zh-cn/activity.php | 9 +++++++++ application/admin/lang/zh-cn/litestore/litestoregoods.php | 4 ++++ application/admin/model/Activity.php | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/model/litestore/Litestoregoods.php | 5 +++++ application/admin/validate/Activity.php | 27 +++++++++++++++++++++++++++ application/admin/view/activity/add.html | 28 ++++++++++++++++++++++++++++ application/admin/view/activity/edit.html | 28 ++++++++++++++++++++++++++++ application/admin/view/activity/index.html | 35 +++++++++++++++++++++++++++++++++++ application/admin/view/litestore/litestoregoods/add.html | 18 ++++++++++++++++++ application/admin/view/litestore/litestoregoods/edit.html | 18 ++++++++++++++++++ application/api/controller/Notify.php | 9 +++++++++ application/api/controller/Order.php | 4 ++++ public/assets/js/backend/activity.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 15 files changed, 327 insertions(+), 0 deletions(-) create mode 100644 application/admin/controller/Activity.php create mode 100644 application/admin/lang/zh-cn/activity.php create mode 100644 application/admin/model/Activity.php create mode 100644 application/admin/validate/Activity.php create mode 100644 application/admin/view/activity/add.html create mode 100644 application/admin/view/activity/edit.html create mode 100644 application/admin/view/activity/index.html create mode 100644 public/assets/js/backend/activity.js diff --git a/application/admin/controller/Activity.php b/application/admin/controller/Activity.php new file mode 100644 index 0000000..f804c78 --- /dev/null +++ b/application/admin/controller/Activity.php @@ -0,0 +1,40 @@ +<?php + +namespace app\admin\controller; + +use app\common\controller\Backend; + +/** + * 首页活动 + * + * @icon fa fa-circle-o + */ +class Activity extends Backend +{ + + /** + * Activity模型对象 + * @var \app\admin\model\Activity + */ + protected $model = null; + + public function _initialize() + { + parent::_initialize(); + $this->model = new \app\admin\model\Activity; + $this->view->assign("placeList", $this->model->getPlaceList()); + } + + public function import() + { + parent::import(); + } + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + + +} diff --git a/application/admin/controller/litestore/Litestoregoods.php b/application/admin/controller/litestore/Litestoregoods.php index f4b46f1..1646e9d 100644 --- a/application/admin/controller/litestore/Litestoregoods.php +++ b/application/admin/controller/litestore/Litestoregoods.php @@ -32,6 +32,7 @@ class Litestoregoods extends Backend $this->view->assign("goodsStatusList", $this->model->getGoodsStatusList()); $this->view->assign("isDeleteList", $this->model->getIsDeleteList()); $this->view->assign("makeforList", $this->model->getMakeforList()); + $this->view->assign("isIndexList", $this->model->getIsIndexList()); $this->view->assign("spec_attr", ''); $this->view->assign("spec_list", ''); diff --git a/application/admin/lang/zh-cn/activity.php b/application/admin/lang/zh-cn/activity.php new file mode 100644 index 0000000..ee3eeb6 --- /dev/null +++ b/application/admin/lang/zh-cn/activity.php @@ -0,0 +1,9 @@ +<?php + +return [ + 'Name' => '标题', + 'Place' => '位置', + 'Place left' => '左边', + 'Place righttop' => '右上', + 'Place rightdown' => '右下' +]; diff --git a/application/admin/lang/zh-cn/litestore/litestoregoods.php b/application/admin/lang/zh-cn/litestore/litestoregoods.php index 1209ff3..2cff5de 100644 --- a/application/admin/lang/zh-cn/litestore/litestoregoods.php +++ b/application/admin/lang/zh-cn/litestore/litestoregoods.php @@ -36,4 +36,8 @@ return [ 'Brand' => '品牌', 'Four_images' => '四宫格图', 'Down_image' => '底部图', + 'Is_index' => '首页展示', + 'Is_index 1' => '已展示', + 'Is_index 0' => '未展示', + 'Activity_id' => '活动类型', ]; diff --git a/application/admin/model/Activity.php b/application/admin/model/Activity.php new file mode 100644 index 0000000..a666608 --- /dev/null +++ b/application/admin/model/Activity.php @@ -0,0 +1,49 @@ +<?php + +namespace app\admin\model; + +use think\Model; + + +class Activity extends Model +{ + + + + + + // 表名 + protected $name = 'activity'; + + // 自动写入时间戳字段 + protected $autoWriteTimestamp = false; + + // 定义时间戳字段名 + protected $createTime = false; + protected $updateTime = false; + protected $deleteTime = false; + + // 追加属性 + protected $append = [ + 'place_text' + ]; + + + + public function getPlaceList() + { + return ['left' => __('Place left'), 'rightTop' => __('Place righttop'), 'rightDown' => __('Place rightdown')]; + } + + + public function getPlaceTextAttr($value, $data) + { + $value = $value ? $value : (isset($data['place']) ? $data['place'] : ''); + $list = $this->getPlaceList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + + + +} diff --git a/application/admin/model/litestore/Litestoregoods.php b/application/admin/model/litestore/Litestoregoods.php index 6ecd462..2e1e7a0 100644 --- a/application/admin/model/litestore/Litestoregoods.php +++ b/application/admin/model/litestore/Litestoregoods.php @@ -49,6 +49,11 @@ class Litestoregoods extends Model return ['1' => __('Makefor 1'),'2' => __('Makefor 2')]; } + public function getIsIndexList() + { + return ['0' => __('Is_index 0'),'1' => __('Is_index 1')]; + } + public function getGoodsStatusList() { return ['10' => __('Goods_status 10'),'20' => __('Goods_status 20')]; diff --git a/application/admin/validate/Activity.php b/application/admin/validate/Activity.php new file mode 100644 index 0000000..e6ae637 --- /dev/null +++ b/application/admin/validate/Activity.php @@ -0,0 +1,27 @@ +<?php + +namespace app\admin\validate; + +use think\Validate; + +class Activity extends Validate +{ + /** + * 验证规则 + */ + protected $rule = [ + ]; + /** + * 提示消息 + */ + protected $message = [ + ]; + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [], + 'edit' => [], + ]; + +} diff --git a/application/admin/view/activity/add.html b/application/admin/view/activity/add.html new file mode 100644 index 0000000..fa18e73 --- /dev/null +++ b/application/admin/view/activity/add.html @@ -0,0 +1,28 @@ +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> + + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label> + <div class="col-xs-12 col-sm-8"> + <input id="c-name" class="form-control" name="row[name]" type="text"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Place')}:</label> + <div class="col-xs-12 col-sm-8"> + + <select id="c-place" class="form-control selectpicker" name="row[place]"> + {foreach name="placeList" item="vo"} + <option value="{$key}" {in name="key" value=""}selected{/in}>{$vo}</option> + {/foreach} + </select> + + </div> + </div> + <div class="form-group layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> + </div> + </div> +</form> diff --git a/application/admin/view/activity/edit.html b/application/admin/view/activity/edit.html new file mode 100644 index 0000000..011ef33 --- /dev/null +++ b/application/admin/view/activity/edit.html @@ -0,0 +1,28 @@ +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> + + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Name')}:</label> + <div class="col-xs-12 col-sm-8"> + <input id="c-name" class="form-control" name="row[name]" type="text" value="{$row.name|htmlentities}"> + </div> + </div> + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Place')}:</label> + <div class="col-xs-12 col-sm-8"> + + <select id="c-place" class="form-control selectpicker" name="row[place]"> + {foreach name="placeList" item="vo"} + <option value="{$key}" {in name="key" value="$row.place"}selected{/in}>{$vo}</option> + {/foreach} + </select> + + </div> + </div> + <div class="form-group layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> + </div> + </div> +</form> diff --git a/application/admin/view/activity/index.html b/application/admin/view/activity/index.html new file mode 100644 index 0000000..b029371 --- /dev/null +++ b/application/admin/view/activity/index.html @@ -0,0 +1,35 @@ +<div class="panel panel-default panel-intro"> + {:build_heading()} + + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="one"> + <div class="widget-body no-padding"> + <div id="toolbar" class="toolbar"> + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('activity/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('activity/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('activity/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> + <a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('activity/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a> + + <div class="dropdown btn-group {:$auth->check('activity/multi')?'':'hide'}"> + <a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a> + <ul class="dropdown-menu text-left" role="menu"> + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li> + <li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li> + </ul> + </div> + + + </div> + <table id="table" class="table table-striped table-bordered table-hover table-nowrap" + data-operate-edit="{:$auth->check('activity/edit')}" + data-operate-del="{:$auth->check('activity/del')}" + width="100%"> + </table> + </div> + </div> + + </div> + </div> +</div> diff --git a/application/admin/view/litestore/litestoregoods/add.html b/application/admin/view/litestore/litestoregoods/add.html index b96153c..80b0987 100644 --- a/application/admin/view/litestore/litestoregoods/add.html +++ b/application/admin/view/litestore/litestoregoods/add.html @@ -13,6 +13,12 @@ </div> </div> <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label> + <div class="col-xs-12 col-sm-8"> + <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value=""> + </div> + </div> + <div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label> <div class="col-xs-12 col-sm-8"> <div class="input-group"> @@ -282,6 +288,18 @@ </div> </div> + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label> + <div class="col-xs-12 col-sm-8"> + + <select id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]"> + {foreach name="isIndexList" item="vo"} + <option value="{$key}" {in name="key" value="0"}selected{/in}>{$vo}</option> + {/foreach} + </select> + + </div> + </div> <div class="form-group layer-footer"> <label class="control-label col-xs-12 col-sm-2"></label> <div class="col-xs-12 col-sm-8"> diff --git a/application/admin/view/litestore/litestoregoods/edit.html b/application/admin/view/litestore/litestoregoods/edit.html index 82eca27..f416841 100644 --- a/application/admin/view/litestore/litestoregoods/edit.html +++ b/application/admin/view/litestore/litestoregoods/edit.html @@ -13,6 +13,12 @@ </div> </div> <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Activity_id')}:</label> + <div class="col-xs-12 col-sm-8"> + <input id="c-activity_id" data-source="activity/index" class="form-control selectpage" name="row[activity_id]" type="text" value="{$row.activity_id}"> + </div> + </div> + <div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label> <div class="col-xs-12 col-sm-8"> <div class="input-group"> @@ -282,6 +288,18 @@ </div> </div> + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Is_index')}:</label> + <div class="col-xs-12 col-sm-8"> + + <select id="c-is_index" data-rule="required" class="form-control selectpicker" name="row[is_index]"> + {foreach name="isIndexList" item="vo"} + <option value="{$key}" {in name="key" value="$row.is_index"}selected{/in}>{$vo}</option> + {/foreach} + </select> + + </div> + </div> <div class="form-group layer-footer"> <label class="control-label col-xs-12 col-sm-2"></label> <div class="col-xs-12 col-sm-8"> diff --git a/application/api/controller/Notify.php b/application/api/controller/Notify.php index 309606f..1cd608a 100644 --- a/application/api/controller/Notify.php +++ b/application/api/controller/Notify.php @@ -29,6 +29,8 @@ class Notify extends Api } $data = $pay->verify(); $model = new \app\api\model\Order(); + $goodsmodel = new \app\api\model\OrderGoods(); + $skumodel = new \app\api\model\GoodsSpec(); try { $out_trade_no = $data['out_trade_no']; $order = $model @@ -41,6 +43,13 @@ class Notify extends Api $order->transaction_id = $data['transaction_id']; $order->pay_time = time(); $order->isUpdate()->save(); + // 减少库存 + $list = $goodsmodel->where('order_id',$order['id'])->select(); + foreach ($list as $key => $value){ + if ($value['deduct_stock_type'] == 20){ + $skumodel->where('goods_spec_id',$value['goods_spec_id'])->setDec('stock_num',$value['total_num']); + } + } //你可以在此编写订单逻辑 } catch (Exception $e) { } diff --git a/application/api/controller/Order.php b/application/api/controller/Order.php index b272247..83cfee9 100644 --- a/application/api/controller/Order.php +++ b/application/api/controller/Order.php @@ -408,6 +408,10 @@ class Order extends Api $ordermodel->save($order); foreach ($goods_array as $key => &$value){ $value['order_id'] = $ordermodel->id; + // 减少库存 + if ($value['deduct_stock_type'] == 10){ + $skumodel->where('goods_spec_id',$value['goods_spec_id'])->setDec('stock_num',$value['total_num']); + } } $ordergoodsmodel->saveAll($goods_array); $order_address['order_id'] = $ordermodel->id; diff --git a/public/assets/js/backend/activity.js b/public/assets/js/backend/activity.js new file mode 100644 index 0000000..86a42af --- /dev/null +++ b/public/assets/js/backend/activity.js @@ -0,0 +1,52 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'activity/index' + location.search, + add_url: 'activity/add', + edit_url: 'activity/edit', + del_url: 'activity/del', + multi_url: 'activity/multi', + import_url: 'activity/import', + table: 'activity', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'name', title: __('Name'), operate: 'LIKE'}, + {field: 'place', title: __('Place'), searchList: {"left":__('Place left'),"rightTop":__('Place righttop'),"rightDown":__('Place rightdown')}, formatter: Table.api.formatter.normal}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file -- libgit2 0.24.0