@@ -198,6 +207,27 @@
}
});
+ upload.render({
+ accept: 'imgurl_detail'
+ , elem: '#imgurl_detail' //绑定元素
+ , url: '/admin/picture' //上传接口
+ , done: function (res) {
+ //上传完毕回调
+ if (res.status == 1) { //成功
+ layer.msg("上传成功", { icon: 1, time: 1000 }, function () {
+ $("#imgurl_detail").attr("src", res.data.path); //单图
+ $("input[name=imgurl_detail]").val(res.data.imgurl);
+ });
+ } else { //失败
+ layer.msg(res.msg, { icon: 2, anim: 6, time: 1500 });
+ }
+ }
+ , error: function () {
+ //请求异常回调
+ layer.msg('服务繁忙,请稍后再试', { icon: 2, anim: 6, time: 1500 });
+ }
+ });
+
});
async function check() {
diff --git a/app/api/controller/Goods.php b/app/api/controller/Goods.php
index 5e12f8c..daab79e 100755
--- a/app/api/controller/Goods.php
+++ b/app/api/controller/Goods.php
@@ -225,7 +225,138 @@ class Goods extends Base
return $this->renderSuccess('请求成功', $new_data);
}
-
+ /**
+ * 福利屋详情
+ * @param \think\Request $request
+ * @return \think\response\Json
+ */
+ public function goods_fuliwu_detail(Request $request)
+ {
+ $goods_id = request()->param('goods_id/d', 0);
+ $goods = GoodsModel::where(['id' => $goods_id])->find();
+ if (!$goods) {
+ return $this->renderError("盒子不存在");
+ }
+ if ($goods['status'] != 1 && $goods['status'] != 3) {
+ return $this->renderError("盒子已下架");
+ }
+
+ // 检查类型是否为福利屋
+ if ($goods['type'] != 15) {
+ return $this->renderError("该盒子不是福利屋类型");
+ }
+
+ // 获取用户信息
+ $user_id = $this->getUserId();
+ // 检查用户是否可以查看该福利屋(解锁金额限制)
+ if ($user_id > 0) {
+ $order_money = Order::where('status', '=', 1)->where('user_id', '=', $user_id)->sum('price');
+ $userInfo = User::where('id', '=', $user_id)->field('istest')->find();
+ if ($userInfo && $userInfo['istest'] > 0) {
+ // 推广账号,门槛计算是全部的
+ $order_money = Order::where('status', '=', 1)->where('user_id', '=', $user_id)->sum('order_zhe_total');
+ }
+
+ if ($goods['unlock_amount'] > $order_money) {
+ return $this->renderError("您需要充值满" . $goods['unlock_amount'] . "元才能查看此福利屋");
+ }
+ } else if ($goods['unlock_amount'] > 0) {
+ return $this->renderError("您需要登录并充值满" . $goods['unlock_amount'] . "元才能查看此福利屋");
+ }
+
+ // 获取福利屋详细信息
+ $goods_detail = GoodsModel::field("id,title,imgurl,imgurl_detail,price,type,new_is,quanju_xiangou,choujiang_xianzhi,flw_start_time,flw_end_time,open_time,goods_describe,is_open,unlock_amount,sort")
+ ->where(['id' => $goods_id])
+ ->find();
+
+ // 处理图片地址和时间格式
+ $goods_detail['imgurl'] = imageUrl($goods_detail['imgurl']);
+ if (!empty($goods_detail['imgurl_detail'])) {
+ $goods_detail['imgurl_detail'] = imageUrl($goods_detail['imgurl_detail']);
+ }
+
+ // 获取福利屋中的奖品列表
+ $goodslist = GoodsList::where('goods_id', '=', $goods_id)
+ ->where('num', '=', 0)
+ ->field('id,title,imgurl,imgurl_detail,stock,price,sc_money,shang_id,surplus_stock,sort')
+ ->order('sort asc')
+ ->select()
+ ->toArray();
+
+ // 处理奖品列表,添加图片地址
+ foreach ($goodslist as &$item) {
+ $item['imgurl'] = imageUrl($item['imgurl']);
+ $item['imgurl_detail'] = imageUrl($item['imgurl_detail']);
+ // 获取奖品类型信息
+ $shang_info = Shang::field('title,color')->where(['id' => $item['shang_id']])->find();
+ $item['shang_title'] = $shang_info ? $shang_info['title'] : '';
+ $item['shang_color'] = $shang_info ? $shang_info['color'] : '';
+ }
+
+ // 统计参与人数
+ $join_count = OrderList::field('id')
+ ->where('goods_id', '=', $goods_id)
+ ->where('order_type', '=', $goods_detail['type'])
+ ->count();
+ // 统计参与人数
+ $user_count = OrderList::
+ where('goods_id', '=', $goods_id)
+ ->where('user_id', '=', $user_id)
+ ->where('order_type', '=', $goods_detail['type'])
+ ->field('id')
+ ->count();
+ //余额充值
+
+ // 获取用户在该福利屋活动期间的消费情况
+ $consumptionData = $this->getUserConsumptionByTimeRange(
+ $user_id,
+ $goods_detail['flw_start_time'],
+ $goods_detail['flw_end_time']
+ );
+
+ $goods_detail['flw_start_time'] = date('Y-m-d H:i', $goods_detail['flw_start_time']);
+ $goods_detail['flw_end_time'] = date('Y-m-d H:i', $goods_detail['flw_end_time']);
+ $goods_detail['open_time'] = date('Y-m-d H:i', $goods_detail['open_time']);
+
+
+ // 组装返回数据
+ $data = [
+ 'goods' => $goods_detail,
+ 'goodslist' => $goodslist,
+ 'join_count' => $join_count,
+ 'current_time' => date('Y-m-d H:i:s'),
+ 'user_status' => $user_count > 0 ? true : false,
+ 'user_consumption' => $consumptionData
+ ];
+
+ // 判断福利屋状态
+ $now = time();
+ $start_time = strtotime($goods_detail['flw_start_time']);
+ $end_time = strtotime($goods_detail['flw_end_time']);
+ $open_time = strtotime($goods_detail['open_time']);
+
+ if ($now < $start_time) {
+ $data['status'] = 'waiting'; // 等待开始
+ $data['status_text'] = '即将开始';
+ } else if ($now >= $start_time && $now < $end_time) {
+ $data['status'] = 'ongoing'; // 进行中
+ $data['status_text'] = '进行中';
+ } else if ($now >= $end_time && $now < $open_time) {
+ $data['status'] = 'ended'; // 已结束,等待开奖
+ $data['status_text'] = '已结束,等待开奖';
+ } else if ($now >= $open_time) {
+ if ($goods_detail['is_open'] == 1) {
+ $data['status'] = 'opened'; // 已开奖
+ $data['status_text'] = '已开奖';
+ } else {
+ $data['status'] = 'to_open'; // 待开奖(超过开奖时间但未开奖)
+ $data['status_text'] = '待开奖';
+ }
+ }
+
+ return $this->renderSuccess('请求成功', $data);
+ }
+
/**
* 商品详情
* @param $goods_id 盒子id
@@ -1498,5 +1629,37 @@ class Goods extends Base
return $this->renderError('同步失败: ' . $e->getMessage());
}
}
+
+ /**
+ * 获取用户在指定时间范围内的消费情况
+ *
+ * @param int $userId 用户ID
+ * @param int $startTime 开始时间戳
+ * @param int $endTime 结束时间戳
+ * @return array 包含余额消费和微信支付消费的数组
+ */
+ public function getUserConsumptionByTimeRange($userId, $startTime, $endTime)
+ {
+ // 查询用户在指定时间范围内的订单消费情况
+ $consumptionData = Order::where('user_id', '=', $userId)
+ ->where(function ($query) {
+ $query->where('price', '>', 0)
+ ->whereOr('use_money', '>', 0);
+ })
+ ->where('status', '=', 1)
+ ->where('pay_time', '>=', $startTime)
+ ->where('pay_time', '<=', $endTime)
+ ->field('sum(use_money) as balance_consumed, sum(price) as wechat_consumed')
+ ->find();
+
+ // 处理查询结果
+ $result = [
+ 'money_consumed' => round(floatval($consumptionData['balance_consumed'] ?? 0), 2), // 余额消费
+ 'wechat_consumed' => round(floatval($consumptionData['wechat_consumed'] ?? 0), 2), // 微信支付消费
+ 'total_consumed' => round(floatval(($consumptionData['balance_consumed'] ?? 0) + ($consumptionData['wechat_consumed'] ?? 0)), 2) // 总消费
+ ];
+
+ return $result;
+ }
}
diff --git a/app/api/route/app.php b/app/api/route/app.php
index 4c920c4..02d6c18 100755
--- a/app/api/route/app.php
+++ b/app/api/route/app.php
@@ -81,6 +81,7 @@ Route::any('quan_yi_ling', 'QuanYi/quan_yi_ling');
#============================
Route::any('goods', 'Goods/goods');
Route::any('goods_fuliwu', 'Goods/goods_fuliwu');
+Route::any('goods_fuliwu_detail', 'Goods/goods_fuliwu_detail');
Route::any('goodsdetail', 'Goods/goodsdetail');
Route::any('goodslist_count', 'Goods/goodslist_count');