diff --git a/application/api/controller/Coupon.php b/application/api/controller/Coupon.php index 3ed5fb4f9..408e0f6e4 100644 --- a/application/api/controller/Coupon.php +++ b/application/api/controller/Coupon.php @@ -30,9 +30,6 @@ class Coupon extends Common { // 调用父类前置方法 parent::__construct(); - - // 是否登录 - $this->IsLogin(); } /** @@ -45,6 +42,9 @@ class Coupon extends Common */ public function Index() { + // 获取基础配置信息 + $base = CallPluginsData('coupon'); + // 优惠劵列表 $coupon_params = [ 'where' => [ @@ -57,6 +57,13 @@ class Coupon extends Common 'user' => $this->user, ]; $ret = CallPluginsServiceMethod('coupon', 'CouponService', 'CouponList', $coupon_params); + + // 返回数据 + $result = [ + 'base' => $base['data'], + 'data' => $ret['data'], + ]; + return DataReturn('处理成功', 0, $result); } /** @@ -64,11 +71,15 @@ class Coupon extends Common * @author Devil * @blog http://gong.gg/ * @version 1.0.0 - * @date 2018-07-12 + * @date 2019-10-15 * @desc description */ public function User() { + // 是否登录 + $this->IsLogin(); + + // 获取用户优惠劵 $coupon_params = [ 'user' => $this->user, 'where' => [ @@ -78,5 +89,28 @@ class Coupon extends Common ]; return CallPluginsServiceMethod('coupon', 'UserCouponService', 'CouponUserList', $coupon_params); } + + /** + * 领取优惠劵 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @date 2019-10-15 + * @desc description + */ + public function Receive() + { + // 是否登录 + $this->IsLogin(); + + // 是否ajax请求 + if(!IS_AJAX) + { + return $this->error('非法访问'); + } + + // 领取优惠劵 + return CallPluginsServiceMethod('coupon', 'CouponService', 'UserReceiveCoupon', $this->data_post); + } } ?> \ No newline at end of file diff --git a/application/common.php b/application/common.php index 4bc958d52..ab65d2367 100755 --- a/application/common.php +++ b/application/common.php @@ -75,6 +75,41 @@ function PathToParams($key = null, $default = null, $path = '') return $data; } +/** + * 调用插件方法 - 获取插件配置信息 + * @author Devil + * @blog http://gong.gg/ + * @version 1.0.0 + * @datetime 2019-10-16T22:03:48+0800 + * @param [string] $plugins [插件名称] + * @param [array] $attachment_field [自定义附件字段] + * @param [string] $service_name [附件定义的服务层类名] + * @param [string] $attachment_property [附件属性名称] + */ +function CallPluginsData($plugins, $attachment_field = [], $service_name = '', $attachment_property = 'base_config_attachment_field') +{ + // 未指定附件字段则自动去获取 + $attachment = []; + if(empty($attachment_field) && !empty($attachment_property)) + { + // 类自定义或者默认两个类 + $service_all = empty($service_name) ? ['BaseService', 'Service'] : [$service_name]; + foreach($service_all as $service) + { + // 服务层获取附件属性 + $plugins_class = 'app\plugins\\'.$plugins.'\service\\'.$service; + if(class_exists($plugins_class) && property_exists($plugins_class, $attachment_property)) + { + $attachment = $plugins_class::${$attachment_property}; + break; + } + } + } + + // 获取配置信息 + return app\service\PluginsService::PluginsData($plugins, $attachment); +} + /** * 调用插件方法 - 访问为静态 * @author Devil diff --git a/application/service/PluginsService.php b/application/service/PluginsService.php index 40438a3fe..924dc3f2b 100755 --- a/application/service/PluginsService.php +++ b/application/service/PluginsService.php @@ -41,6 +41,8 @@ class PluginsService { $data = cache($key); } + + // 数据不存在则从数据库读取 if(empty($data)) { // 获取数据 @@ -49,7 +51,7 @@ class PluginsService { $data = json_decode($data, true); - // 是否有图片需要处理 + // 是否有自定义附件需要处理 if(!empty($attachment_field) && is_array($attachment_field)) { foreach($attachment_field as $field) @@ -60,6 +62,26 @@ class PluginsService $data[$field] = ResourcesService::AttachmentPathViewHandle($data[$field]); } } + } else { + // 所有附件后缀名称 + $attachment_ext = config('ueditor.fileManagerAllowFiles'); + + // 未自定义附件则自动根据内容判断处理附件,建议自定义附件字段名称处理更高效 + if(!empty($attachment_ext) && is_array($attachment_ext)) + { + foreach($data as $k=>$v) + { + $ext = strrchr(substr($v, -6), '.'); + if($ext !== false) + { + if(in_array($ext, $attachment_ext)) + { + $data[$k.'_old'] = $v; + $data[$k] = ResourcesService::AttachmentPathViewHandle($v); + } + } + } + } } // 存储缓存 @@ -114,6 +136,9 @@ class PluginsService } } + // 移除多余的字段 + unset($params['data']['pluginsname'], $params['data']['pluginscontrol'], $params['data']['pluginsaction']); + // 数据更新 if(Db::name('Plugins')->where(['plugins'=>$params['plugins']])->update(['data'=>json_encode($params['data']), 'upd_time'=>time()])) { diff --git a/public/appmini/old/weixin/app.js b/public/appmini/old/weixin/app.js index 3a194caeb..54a82a2b5 100755 --- a/public/appmini/old/weixin/app.js +++ b/public/appmini/old/weixin/app.js @@ -60,6 +60,7 @@ App({ "user_orderaftersale": "退款/售后", "user_orderaftersale_detail": "订单售后", "user_order_comments": "订单评论", + "coupon": "领劵中心", "user_coupon": "优惠劵", }, diff --git a/public/appmini/old/weixin/app.json b/public/appmini/old/weixin/app.json index b9e1692d0..7a9c6bc5b 100755 --- a/public/appmini/old/weixin/app.json +++ b/public/appmini/old/weixin/app.json @@ -1,5 +1,6 @@ { - "pages": ["pages/user-coupon/user-coupon", + "pages": [ + "pages/coupon/coupon", "pages/index/index", "pages/goods-category/goods-category", "pages/cart/cart", @@ -25,7 +26,8 @@ "pages/user-integral/user-integral", "pages/user-goods-browse/user-goods-browse", "pages/user-orderaftersale/user-orderaftersale", - "pages/user-orderaftersale-detail/user-orderaftersale-detail" + "pages/user-orderaftersale-detail/user-orderaftersale-detail", + "pages/user-coupon/user-coupon" ], "window": { diff --git a/public/appmini/old/weixin/pages/coupon/coupon.js b/public/appmini/old/weixin/pages/coupon/coupon.js new file mode 100644 index 000000000..b5f1ccb53 --- /dev/null +++ b/public/appmini/old/weixin/pages/coupon/coupon.js @@ -0,0 +1,128 @@ +const app = getApp(); +Page({ + data: { + data_bottom_line_status: false, + data_list_loding_status: 1, + data_list_loding_msg: '', + data_list: [], + data_base: null, + }, + + onLoad(params) { + this.init(); + }, + + onShow() { + wx.setNavigationBarTitle({ title: app.data.common_pages_title.coupon }); + }, + + init() { + // 获取数据 + this.get_data_list(); + }, + + // 获取数据 + get_data_list() { + var self = this; + wx.showLoading({ title: "加载中..." }); + this.setData({ + data_list_loding_status: 1 + }); + + wx.request({ + url: app.get_request_url("index", "coupon"), + method: "POST", + data: {}, + dataType: "json", + success: res => { + wx.hideLoading(); + wx.stopPullDownRefresh(); + if (res.data.code == 0) { + var data = res.data.data; + var status = ((data.data || []).length > 0); + this.setData({ + data_base: data.base || null, + data_list: data.data || [], + data_list_loding_msg: '', + data_list_loding_status: status ? 3 : 0, + data_bottom_line_status: status, + }); + + // 导航名称 + if ((data.base || null) != null && (data.base.application_name || null) != null) + { + wx.setNavigationBarTitle({ title: data.base.application_name }); + } + } else { + self.setData({ + data_bottom_line_status: false, + data_list_loding_status: 2, + data_list_loding_msg: res.data.msg, + }); + app.showToast(res.data.msg); + } + }, + fail: () => { + wx.hideLoading(); + wx.stopPullDownRefresh(); + self.setData({ + data_bottom_line_status: false, + data_list_loding_status: 2, + data_list_loding_msg: '服务器请求出错', + }); + app.showToast("服务器请求出错"); + } + }); + }, + + // 领取事件 + receive_event(e) { + var user = app.get_user_cache_info(this, "receive_event"); + // 用户未绑定用户则转到登录页面 + if (app.user_is_need_login(user)) { + wx.redirectTo({ + url: "/pages/login/login?event_callback=receive_event" + }); + return false; + } else { + var self = this; + var index = e.currentTarget.dataset.index; + var value = e.currentTarget.dataset.value; + var temp_list = this.data.data_list; + if (temp_list[index]['is_operable'] != 0) { + wx.showLoading({ title: "处理中..." }); + wx.request({ + url: app.get_request_url("receive", "coupon"), + method: "POST", + data: { "coupon_id": value }, + dataType: "json", + header: { 'content-type': 'application/x-www-form-urlencoded' }, + success: res => { + wx.hideLoading(); + if (res.data.code == 0) { + app.showToast(res.data.msg, "success"); + if (self.data.data_base != null && self.data.data_base.is_repeat_receive != 1) + { + temp_list[index]['is_operable'] = 0; + temp_list[index]['is_operable_name'] = '已领取'; + self.setData({ data_list: temp_list }); + } + } else { + app.showToast(res.data.msg); + } + }, + fail: () => { + wx.hideLoading(); + app.showToast("服务器请求出错"); + } + }); + } + } + }, + + // 下拉刷新 + onPullDownRefresh() { + this.get_data_list(); + }, + +}); diff --git a/public/appmini/old/weixin/pages/coupon/coupon.json b/public/appmini/old/weixin/pages/coupon/coupon.json new file mode 100644 index 000000000..331ad4f3d --- /dev/null +++ b/public/appmini/old/weixin/pages/coupon/coupon.json @@ -0,0 +1,3 @@ +{ + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/public/appmini/old/weixin/pages/coupon/coupon.wxml b/public/appmini/old/weixin/pages/coupon/coupon.wxml new file mode 100644 index 000000000..b62736ec5 --- /dev/null +++ b/public/appmini/old/weixin/pages/coupon/coupon.wxml @@ -0,0 +1,30 @@ + + + + + + + + + + {{item.discount_value}} + {{item.type == 0 ? '元' : '折'}} + {{item.desc}} + + {{item.use_limit_type_name}} + + + + {{item.is_operable_name}} + + + + + + + + + + + + \ No newline at end of file diff --git a/public/appmini/old/weixin/pages/coupon/coupon.wxss b/public/appmini/old/weixin/pages/coupon/coupon.wxss new file mode 100644 index 000000000..8f8a91165 --- /dev/null +++ b/public/appmini/old/weixin/pages/coupon/coupon.wxss @@ -0,0 +1,70 @@ +/* + * 数据列表 + */ +.data-list { + padding: 0 10rpx; +} +.data-list .item { + overflow: hidden; + height: 180rpx; + border: 1px solid #D2364C; +} +.v-left { + width: calc(100% - 140rpx); + padding: 30rpx 0 30rpx 20rpx; + box-sizing:border-box; + -moz-box-sizing:border-box; + -webkit-box-sizing:border-box; +} +.v-left .base { + color: #D2364C; +} +.v-left .base .symbol { + font-family: Verdana, Tahoma; + font-size: 48rpx; + font-weight: 400; +} +.v-left .base .price { + font-weight: 700; + font-family: arial; + font-size: 76rpx; +} +.v-left .base .desc { + margin-left: 20rpx; +} +.v-left base-tips, .v-left .base-time { + margin-top: 10rpx; +} + +.v-right { + background: #d2364c; + width: 140rpx; + height: 180rpx; + color: #fff; + font-weight: 500; + position: relative; + text-align: center; +} +.v-right:before { + content: ''; + display: inline-block; + height: 100%; + vertical-align: middle; +} +.v-right .circle { + display: block; + position: absolute; + left: -1px; + top: -3px; + width: 3px; + height: 180rpx; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAACpCAYAAADur4c3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo3MjUzYzIwOS04ZWNlLTRlNTctODQ4OC01ZDExOTkwOGNkYmMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTM1QzgxREZGRDI5MTFFNTg3QjhGRUQ1MDY5OURERUQiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTM1QzgxREVGRDI5MTFFNTg3QjhGRUQ1MDY5OURERUQiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTJiNzVkOGUtZDc2Yi00MzEzLWFmNmYtYTJkNTRlYTI4YTY1IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjcyNTNjMjA5LThlY2UtNGU1Ny04NDg4LTVkMTE5OTA4Y2RiYyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pvy+vnQAAAEqSURBVHjaYvz//z8DDDAxIAFyOVeBOAHEYfyPMDsLmXMfmfMT2YADDP8h4CEQq4A4aUDMA1LNSKZDXwJxGcg1yJaWIXOeInO+IxuwA+acK0AsA+IEADEbic7hhPOAer4DcQcQMyNb2oLMeYVsADcyZwPMObuBWBTEsQFpI9E54sjO+QvEc0F+YoHKJgHxJ2TnvEM2gBmZswrmnA1AzAXiaJPhHC1k58BNQ3bBTGTOR2QD/iJzFsH8Mw/kHxBHggzn2KA7BxzWyC5Yisz5imwACmc2LLY7QbEN4nCS4ZwAIGZFds5lUEpEdsF6nKn3PTJnAsiAV0BcBsSM5GamFCDmQXYOOJ8iu2Anzrz9HKU8ABlwDYgTKcnbo0XNaFEzWtQgipqOYVLUAAQYAKPWa4c8cIHnAAAAAElFTkSuQmCC) no-repeat; +} +.item-disabled .v-right { + background: #dfdfdf !important; + color: #c0c0c0 !important; + cursor: no-drop !important; +} +.item-disabled { + border: 1px solid #dfdfdf !important; +} \ No newline at end of file diff --git a/public/appmini/old/weixin/pages/user-coupon/user-coupon.js b/public/appmini/old/weixin/pages/user-coupon/user-coupon.js index defbb92ad..e70047d55 100644 --- a/public/appmini/old/weixin/pages/user-coupon/user-coupon.js +++ b/public/appmini/old/weixin/pages/user-coupon/user-coupon.js @@ -36,6 +36,7 @@ Page({ } }, + // 获取数据 get_data_list() { var self = this; wx.showLoading({ title: "加载中..." });