Quellcode durchsuchen

Merge branch 'master' into liuzj-permission-dev

liuzejian vor 1 Jahr
Ursprung
Commit
1a6ed3b30b

+ 41 - 0
app/Libs/Helpers.php

@@ -343,3 +343,44 @@ if (!function_exists("random")) {
         return $hash;
     }
 }
+
+if(!function_exists('getMiniProgramTableName')){
+    /**
+     *  获取小程序表名  表名前添加前缀:wechat_miniprogram_ 或者 douyin_miniprogram_
+     * name: getMiniProgramTableName
+     * @param int $from 来源 1 微信小程序
+     * @param string $name 表名
+     * @return string
+     * date 2023/05/19 09:18
+     */
+    function getMiniProgramTableName(int $from, string $name): string
+    {
+        return sprintf('%s_%s', [
+            '1' => 'wechat_miniprogram',
+            '2' => 'douyin_miniprogram'
+        ][$from],$name);
+    }
+}
+
+if (!function_exists('getProp')){
+    /**
+     * 获取对象或数组的属性值
+     * @param        $param
+     * @param        $key
+     * @param string $default
+     * @return mixed|string
+     */
+    function getProp($param, $key, $default = '')
+    {
+        $result = $default;
+        if (is_object($param) && isset($param->$key)) {
+            $result = $param->$key;
+        }
+
+        if (is_array($param) && isset($param[$key])) {
+            $result = $param[$key];
+        }
+
+        return $result;
+    }
+}

+ 98 - 0
modules/Channel/Http/Controllers/OrdersController.php

@@ -0,0 +1,98 @@
+<?php
+/**
+ *
+ * @file:OrdersController.php
+ * @Date: 2023/5/23
+ * @Time: 10:15
+ */
+
+
+namespace Modules\Channel\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Modules\Channel\Models\UserHasMiniprograms;
+use Modules\Channel\Services\Order\OrderService;
+use Modules\User\Http\Controllers\UserTrait;
+use Modules\User\Models\User;
+
+class OrdersController extends CatchController
+{
+    use UserTrait;
+
+    /**
+     *  订单列表
+     * name: orderList
+     * @param Request $request
+     * date 2023/05/23 10:22
+     */
+    public function orderList(Request $request)
+    {
+        $param = $request->all();
+        $userContext = $this->getUserContext(null);
+
+        // 公司账户处理
+        if ($userContext['loginUserRoles']->contains('company')) {
+            $param['puser_id'] = $userContext['operateUser']->id;
+        }
+
+        // 投手处理
+        if ($userContext['loginUserRoles']->contains('optimizer')) {
+            $param['user_id'] = $userContext['operateUser']->id;
+        }
+
+        $list = OrderService::getOrderList($param);
+        if (!$list->isEmpty()) {
+            foreach ($list as $val) {
+                if ($userContext['loginUserRoles']->contains('company')) {
+                    $val->total_count = $val->caompany_count;
+                }
+                if (getProp($param, 'user_id')) {
+                    $val->total_count = $val->promotion_count;
+                }
+                unset($val->caompany_count, $val->promotion_count, $val->id, $val->puser_id, $val->pay_product_id, $val->create_ip, $val->transaction_id);
+                unset($val->third_orderid, $val->pay_merchant_sourcem, $val->video_id, $val->video_series_sequence, $val->updated_at);
+            }
+        }
+        return $list;
+    }
+
+    /**
+     *  订单小程选择列表
+     * name: userUseList
+     * @param Request $request
+     * @return \Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection|UserHasMiniprograms[]
+     * date 2023/05/23 17:35
+     */
+    public function userUseList(Request $request)
+    {
+        $uid = $request->input("user_id", 0);
+        if (!$uid) {
+            $uid = $this->getCurrentUser()->id;
+        }
+
+        return OrderService::userUseProgramsList($uid);
+    }
+
+    public function promotionsOptions(Request $request)
+    {
+        $title = $request->input('name');
+        $uid = $request->input("user_id", 0);
+        if (!$uid) {
+            $uid = $this->getCurrentUser()->id;
+        }
+        return OrderService::promotionsOptions($uid, $title);
+    }
+
+    public function orderTypes()
+    {
+        return OrderService::getOrderType();
+    }
+
+    public function orderStatus()
+    {
+        return OrderService::getOrderPayType();
+    }
+}
+

+ 109 - 0
modules/Channel/Http/Controllers/WechatMinprogramUserController.php

@@ -0,0 +1,109 @@
+<?php
+/**
+ * 微信小程序用户
+ * @file:WechatMinprogramUserController.php
+ * @Date: 2023/5/19
+ * @Time: 10:24
+ */
+
+
+namespace Modules\Channel\Http\Controllers;
+
+use Catch\Base\CatchController;
+use Illuminate\Http\Request;
+use Catch\Exceptions\FailedException;
+use Modules\Channel\Services\WechatMinprogram\WechatMinprogramUserService;
+
+class WechatMinprogramUserController extends CatchController
+{
+
+    /***
+     *  获取用户信息
+     * name: userInfoDetail
+     * @param $uid
+     * @return array|\Illuminate\Database\Eloquent\Model|\Illuminate\Database\Query\Builder|object
+     * date 2023/05/19 14:13
+     */
+    public function userInfoDetail($uid)
+    {
+
+        if ($uid < 1) {
+           $this->$this->errorMsg('缺少微信小程序用户id参数');
+        }
+        $userInfo = WechatMinprogramUserService::userInfoDetail($uid);
+        if (!$userInfo) {
+          $this->errorMsg('用户不存在');
+        }
+        return $userInfo;
+    }
+
+    /**
+     *  订单记录
+     * name: orderList
+     * @param Request $request
+     * date 2023/05/19 14:14
+     */
+    public function orderList(Request $request)
+    {
+        $uid = $request->input('uid');
+        if ($uid <  1){
+            $this->errorMsg("用户参数必填");
+        }
+
+        return WechatMinprogramUserService::getUserOrderList($uid);
+
+    }
+
+    /***
+     *  观看记录
+     * name: watchRecord
+     * @param Request $request
+     * date 2023/05/19 14:18
+     */
+    public  function watchRecord  (Request $request)
+    {
+        $uid = $request->input('uid');
+        if ($uid <  1){
+            $this->errorMsg("用户参数必填");
+        }
+
+        $list =  WechatMinprogramUserService::getUserWatchRecord($uid);
+        return $this->pageWithArray($request,$list,$request->input('limit',15));
+    }
+
+    /**
+     *  消费记录
+     * name: consumeRecord
+     * @param Request $request
+     * date 2023/05/19 14:19
+     */
+    public  function consumeRecord (Request $request)
+    {
+        $uid = $request->input('uid');
+        if ($uid <  1){
+            $this->errorMsg("用户参数必填");
+        }
+        return  WechatMinprogramUserService::getUserConsumeRecord($uid);
+    }
+
+    protected function errorMsg($msg,$code = 10005){
+        throw new FailedException($msg,$code );
+    }
+
+    /**
+     *  数组分页
+     * name: pageWithArray
+     * @param $request
+     * @param $array
+     * @param int $limit
+     * @return \Illuminate\Pagination\LengthAwarePaginator
+     * date 2023/05/19 16:44
+     */
+   protected function pageWithArray($request,$array,$limit = 15){
+        $currentPage = \Illuminate\Pagination\LengthAwarePaginator::resolveCurrentPage();
+        $itemCollection = collect($array);
+        $currentPageItems = $itemCollection->slice(($currentPage*$limit)-$limit,$limit)->all();
+        return new \Illuminate\Pagination\LengthAwarePaginator($currentPageItems,count($itemCollection),$limit);
+    }
+
+}

+ 14 - 0
modules/Channel/Models/MiniprogramUserVip.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace Modules\Channel\Models;
+
+
+class MiniprogramUserVip extends BaseModel
+{
+    protected $table = 'miniprogram_user_vips';
+
+    protected $fillable = [
+        'id', 'uid', 'start_time', 'end_time', 'created_at', 'updated_at',
+    ];
+
+}

+ 14 - 0
modules/Channel/Models/Order.php

@@ -0,0 +1,14 @@
+<?php
+
+namespace Modules\Channel\Models;
+
+
+class Order extends BaseModel
+{
+    protected $table = 'orders';
+
+    protected $fillable = [
+        'id', 'uid', 'promotion_id', 'user_id', 'price', 'pay_product_id', 'create_ip', 'status', 'trade_no', 'transaction_id', 'third_orderid', 'order_type', 'pay_merchant_source', 'video_id', 'video_series_sequence', 'pay_end_at', 'updated_at', 'created_at',
+    ];
+
+}

+ 13 - 0
modules/Channel/Models/UidLogs.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Modules\Channel\Models;
+
+class UidLogs extends \Modules\Common\Models\BaseModel
+{
+    protected $table = 'uid_logs';
+
+    protected $fillable = [
+        'id', 'use_for',
+    ];
+
+}

+ 15 - 0
modules/Channel/Models/VideoSeries.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace Modules\Channel\Models;
+
+
+
+class VideoSeries extends BaseModel
+{
+    protected $table = 'video_series';
+
+    protected $fillable = [
+        'id', 'video_id', 'series_name', 'series_sequence', 'is_enabled', 'video_key', 'created_at', 'updated_at', 'duration',
+    ];
+
+}

+ 13 - 0
modules/Channel/Models/Videos.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace Modules\Channel\Models;
+
+class Videos extends BaseModel
+{
+    protected $table = 'videos';
+
+    protected $fillable = [
+        'id', 'name', 'category_id', 'd_charge_sequence', 'd_charge_coin', 'd_charge_type', 'shelf_type', 'shelf_at', 'total_episode_num', 'updated_episode_num', 'update_type', 'cp_name', 'cp_share_type', 'cover_image', 'created_at', 'updated_at', 'd_zan_num',
+    ];
+
+}

+ 206 - 0
modules/Channel/Services/Order/OrderService.php

@@ -0,0 +1,206 @@
+<?php
+/**
+ *
+ * @file:OrderService.php
+ * @Date: 2023/5/23
+ * @Time: 13:40
+ */
+
+
+namespace Modules\Channel\Services\Order;
+
+use Illuminate\Support\Facades\DB;
+use Modules\Channel\Models\Order;
+use Modules\Channel\Models\UserHasMiniprograms;
+use Modules\Manage\Models\Miniprogram;
+use Modules\User\Models\User;
+
+class OrderService
+{
+
+    /**
+     *  订单列表查询
+     * name: getOrderList
+     * @param array $param
+     * date 2023/05/23 13:45
+     */
+    public static function getOrderList(array $param, $isAll = false)
+    {
+        $sql = self::getOrderQuerySql($param);
+
+        if ($isAll) {
+            $list = $sql->get();
+        } else {
+            $list = $sql->simplePaginate(getProp($param, 'limit', 15));
+        }
+
+
+        if (!$list->isEmpty()) {
+            $status = array_column(self::getOrderPayType(),null,'value');
+            $types = array_column(self::getOrderType(),null,'value');
+            foreach ($list as $val) {
+                $val->username = $val->user_id > 0 ? User::where('id', $val->user_id)->value('username') : "";
+                $val->company_name = "-";
+                $val->play_name = '-';
+                $company = Miniprogram::where('id', $val->miniprogram_id)->first();
+                if ($company) {
+                    $val->company_name = $company->company();
+                    $val->play_name = $company->play_name;
+                }
+                $val->promotion_title = $val->promotion_id > 0 ? DB::table('promotions')->where('id', $val->promotion_id)->value('name') : "";
+                $val->total_count = Order::where('uid', $val->uid)->where('id', "<=", $val->id)->count();
+                if ($val->user_id > 0) {
+                    $val->caompany_count = Order::where('uid', $val->uid)->where('puser_id', '>', 0)->where('puser_id', $val->puser_id)->where('id', "<=", $val->id)->count();
+                    $val->promotion_count = Order::where('uid', $val->uid)->where('puser_id', '>', 0)->where('puser_id', $val->puser_id)->where('user_id', ">", 0)->where('user_id', $val->user_id)->where('id', "<=", $val->id)->count();
+                } else {
+                    $val->caompany_count = Order::where('uid', $val->uid)->where('puser_id', '>', 0)->count();
+                    $val->promotion_count = Order::where('uid', $val->uid)->where('user_id', '>', 0)->count();
+                }
+                $val->tip_text =  $types[$val->order_type]['name']?? "-";
+                $val->status_txt = $status[$val->status]['name'] ?? "-";
+                $val->pay_name = '微信支付';
+            }
+        }
+
+        return $list;
+    }
+
+    public static function getOrderType()
+    {
+        return [
+            ["value" => "COIN","name" => "普通充值"],
+            ["value" => 'MONTH',"name" => '包月'],
+            ["value" => 'QUARTER' ,"name"=> '包季'],
+            ["value" => 'YEAR' ,"name"=> '包年'],
+            ["value" => "FIRST_COIN" ,"name" => "首充"]
+        ];
+    }
+
+    public static function getOrderPayType()
+    {
+        return [
+            ["value" => "PAID","name" => "已支付"],
+            ["value" =>'REFUND',"name" => '已退款'],
+            ["value" =>'UNPAID' ,"name"=> '未支付'],
+        ];
+    }
+
+    private static function getOrderQuerySql(array $param)
+    {
+        $sql = Order::query();
+        // 优化师查询
+        if (!empty(getProp($param, 'user_id'))) {
+            $sql->where('user_id', $param['user_id']);
+        }
+        // 公司查询
+        if (!empty(getProp($param, 'puser_id'))) {
+            $sql->where('puser_id', $param['puser_id']);
+        }
+        // 小程序
+        if (!empty(getProp($param, 'miniprogram_id'))) {
+            $sql->where('miniprogram_id', $param['miniprogram_id']);
+        }
+
+        // 推广id
+        if (!empty(getProp($param, 'promotion_id'))) {
+            $sql->where('promotion_id', $param['promotion_id']);
+        }
+        // 订单状态查询
+        if (!empty(getProp($param, 'status'))) {
+            $sql->where('status', $param['status']);
+        }
+
+        // 充值项类型
+        if (!empty(getProp($param, 'order_type'))) {
+            $sql->where('order_type', $param['order_type']);
+        }
+        // 用户
+        if (!empty(getProp($param, 'uid'))) {
+            $sql->where('uid', $param['uid']);
+        }
+        // 订单号查询
+        if (!empty(getProp($param, 'trade_no'))) {
+            $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
+            // $sql->where('trade_no',  $param['trade_no']);
+        }
+        if (!empty(getProp($param, 'trade_no'))) {
+            // $sql->where('trade_no', "like", "%" . $param['trade_no'] . "%");
+            $sql->where('trade_no', $param['trade_no']);
+        }
+        // 支付时间
+        if (!empty(getProp($param, 'pay_end_at_start'))) {
+            $sql->where('pay_end_at', $param['pay_end_at_start']);
+        }
+        if (!empty(getProp($param, 'pay_end_at_end'))) {
+            $sql->where('pay_end_at', "<=", $param['pay_end_at_end']);
+        }
+        // 创建时间
+        if (!empty(getProp($param, 'created_at_start'))) {
+            $sql->where('created_at', $param['created_at_start']);
+        }
+
+        if (!empty(getProp($param, 'created_at_end'))) {
+            $sql->where('created_at', "<=", $param['created_at_end']);
+        }
+        return $sql;
+    }
+
+    /**
+     *  用户订单小程选择列表
+     * name: userUseProgramsList
+     * @param mixed $uid
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Support\Collection
+     * date 2023/05/23 17:51
+     */
+    public static function userUseProgramsList(mixed $uid)
+    {
+
+        $operateUser = User::find($uid);
+        $operateUserRoles = $operateUser->roles->pluck('identify');
+
+        if ($operateUserRoles->contains('company') || $operateUserRoles->contains('optimizer')) {
+            return UserHasMiniprograms::query()->join('miniprogram', 'miniprogram.id', '=', 'user_has_miniprograms.miniprogram_id')
+                ->where('uid', $uid)
+                ->groupBy("user_has_miniprograms.miniprogram_id")
+                ->select('user_has_miniprograms.miniprogram_id', 'miniprogram.name', 'miniprogram.play_name')
+                ->get();
+        } else {
+            return DB::table('miniprogram')->select("id as miniprogram_id", "name", "play_name")->get();
+        }
+
+    }
+
+    /**
+     *  推广列表选择项
+     * name: promotionsOptions
+     * @param mixed $uid
+     * @param mixed $title
+     * @return \Illuminate\Support\Collection
+     * date 2023/05/23 18:13
+     */
+    public static function promotionsOptions(mixed $uid, mixed $title)
+    {
+        $operateUser = User::find($uid);
+        $operateUserRoles = $operateUser->roles->pluck('identify');
+        $list = DB::table('promotions')->select('id as promotion_id ', 'name');
+        if ($operateUserRoles->contains('optimizer')) {
+            if ($title) {
+                $list->where('name', 'like', "%" . $title . "%");
+            }
+            return $list->where('uid', $uid)->get();
+        } else if ($operateUserRoles->contains('company')) {
+            $list  =  DB::table('promotions')->join('users','users.id',"promotions.uid")
+                ->where('users.pid',$uid)->orWhere("promotions.uid",$uid)->select("promotions.id as promotion_id ", 'promotions.name');
+            if ($title) {
+                $list->where('promotions.name', 'like', "%" . $title . "%");
+            }
+            return $list->get();
+
+        } else {
+            if ($title) {
+                $list->where('name', 'like', "%" . $title . "%");
+            }
+            return $list->get();
+        }
+    }
+}

+ 164 - 0
modules/Channel/Services/WechatMinprogram/WechatMinprogramUserService.php

@@ -0,0 +1,164 @@
+<?php
+/**
+ *
+ * @file:WechatMinprogramUserService.php
+ * @Date: 2023/5/19
+ * @Time: 11:07
+ */
+
+
+namespace Modules\Channel\Services\WechatMinprogram;
+
+use Carbon\Carbon;
+use Illuminate\Pagination\LengthAwarePaginator;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Redis;
+use Modules\Channel\Models\MiniprogramUserVip;
+use Modules\Channel\Models\Order;
+use Modules\Channel\Models\UidLogs;
+use Modules\Channel\Models\Videos;
+use Modules\Channel\Models\VideoSeries;
+use Modules\Manage\Models\Miniprogram;
+
+class WechatMinprogramUserService
+{
+    public const WATCH_RECORD_REDIS_KEY = 'watchrecord:uid:%s';
+    public const WATCH_RECORD_REDIS_FIELD_PREFIX = 'video_id:';
+
+
+    /**
+     *  获取微信小程序用户信息
+     * name: userInfoDetail
+     * @param $uid
+     * date 2023/05/19 11:08
+     */
+    public static function userInfoDetail($uid)
+    {
+        $userInfo = DB::table(getMiniProgramTableName(1, 'users'))->where('id', $uid)->first();
+        if (!$userInfo) {
+            return $userInfo;
+        }
+        $ju_chang = Miniprogram::where('id', $userInfo->miniprogram_id)->value('play_name');
+        $result = [
+            'uid' => $userInfo->id,
+            'openid' => $userInfo->openid,
+            'yu_chang' => $ju_chang,
+            'ranse_start_at' => $userInfo->ranse_start_at ?: "",
+            'charge_coin' => $userInfo->charge_coin,
+            'reward_coin' => $userInfo->reward_coin,
+        ];
+
+        return array_merge($result, self::getLevelText($uid));
+
+    }
+
+    private static function getLevelText($uid)
+    {
+        $record = self::userVipRecord($uid);
+        if ($record && Carbon::now()->lt(Carbon::createFromTimestamp(strtotime($record->end_time)))) {
+            return ['is_vip' => 1, 'vip_text' => "vip会员", 'vip_end' => $record->end_time];
+        }
+        return ['is_vip' => 0, 'vip_text' => "-", 'vip_end' => ""];
+
+    }
+
+    public static function isVipUser(int $uid)
+    {
+        $record = self::userVipRecord($uid);
+        if (!$record) {
+            return false;
+        }
+        return Carbon::now()->lt(Carbon::createFromTimestamp(strtotime($record->end_time)));
+    }
+
+    private static function userVipRecord(int $uid)
+    {
+        return MiniprogramUserVip::where('uid', $uid)->first();
+    }
+
+    /**
+     *  根据用户查充值记录
+     * name: getUserOrderList
+     * @param int $uid
+     * date 2023/05/19 14:57
+     */
+    public static function getUserOrderList(int $uid)
+    {
+        $pool = [
+            'MONTH' => '包月',
+            'QUARTER' => '包季度',
+            'YEAR' => '包年',
+        ];
+        $list = Order::join('pay_products', 'pay_products.id', '=', 'orders.pay_product_id')
+            ->select('orders.price', 'orders.trade_no', "orders.video_id", 'orders.pay_end_at', 'pay_products.type', 'pay_products.price as product_price', 'pay_products.given')
+            ->where('orders.status', 'PAID')
+            ->where('orders.uid', $uid)
+            ->orderBy('orders.id', 'desc')
+            ->simplePaginate(15);
+
+        foreach ($list as $item) {
+            $item->pay_name = '微信支付';
+            $item->status = '已完成';
+            if ($item->type == 'COIN') {
+                $item->rechare_coin = $item->product_price * 100;
+                $item->pay_result = $item->product_price * 100 + $item->given;
+            } elseif (isset($pool[$item->type])) {
+                $item->rechare_coin = "-";
+                $item->pay_result = $pool[$item->type];
+            } else {
+                $item->rechare_coin = "-";
+                $item->pay_result = '充值';
+            }
+
+            $item->from_page = $item->video_id > 0 ? "播放页" : "充值页";
+        }
+        return $list;
+
+    }
+
+    /**
+     *  观看记录
+     * name: getUserWatchRecord
+     * @param mixed $uid 用户id
+     * @return array
+     * date 2023/05/19 15:57
+     */
+    public static function getUserWatchRecord($uid)
+    {
+        $key = sprintf(self::WATCH_RECORD_REDIS_KEY, $uid);
+        $record = Redis::hgetall($key);
+        $result = [];
+        foreach ($record as $video_field => $watch_info) {
+            if (!Str::startsWith($video_field, self::WATCH_RECORD_REDIS_FIELD_PREFIX)) {
+                continue;
+            }
+            $video_id = Str::replace(self::WATCH_RECORD_REDIS_FIELD_PREFIX, '', $video_field);
+            $info = explode('_', $watch_info);
+            $result[] = [
+                'video_id' => $video_id,
+                'video_series_sequence' => $info[0],
+                'watch_at' => get_date($info[1]),
+                'watch_time' => $info[1]
+            ];
+        }
+        usort($result, function ($item1, $item2) {
+            return $item1['watch_time'] > $item2['watch_time'];
+        });
+
+        return $result;
+    }
+
+    public static function getUserConsumeRecord(mixed $uid)
+    {
+        $tableName = 'coin_cost_record_' . ($uid % 8);
+        $result = DB::table($tableName)->where('uid', $uid)->orderBy('id', 'desc')->simplePaginate();
+        foreach ($result as $item) {
+            $item->series_name = VideoSeries::where('video_id', $item->video_id)->where('series_sequence', $item->sequence)->select('series_name')->first()->series_name;
+            $item->video_name = Videos::where('id', $item->video_id)->value('name');
+            $item->coin_cost = $item->charge_coin_cost + $item->reward_coin_cost;
+        }
+        return $result;
+    }
+
+
+}

+ 14 - 0
modules/Channel/routes/route.php

@@ -27,7 +27,21 @@ Route::prefix('channel')->group(function () {
         Route::post('updatePayTemplateItem/{id}',[PayTemplateController::class,'updatePayTemplateItem']);
         Route::get('deleteOneItem/{id}',[PayTemplateController::class,'deleteOneItem']);
     });
+    Route::prefix('wechat_min_user')->group(function (){
+        // 微信小程用户信息
+        Route::get('detail/{uid}',[\Modules\Channel\Http\Controllers\WechatMinprogramUserController::class,'userInfoDetail']);
+        // 微信小程序充值记录
+        Route::get('order_list',[\Modules\Channel\Http\Controllers\WechatMinprogramUserController::class,'orderList']);
+        //观看记录
+        Route::get('watch_record',[\Modules\Channel\Http\Controllers\WechatMinprogramUserController::class,'watchRecord']);
+        // 消费记录
+        Route::get('consume_record',[\Modules\Channel\Http\Controllers\WechatMinprogramUserController::class,'consumeRecord']);
+    });
 
+    Route::any("order_list",[\Modules\Channel\Http\Controllers\OrdersController::class,'orderList']);
+    Route::any("order_types",[\Modules\Channel\Http\Controllers\OrdersController::class,'orderTypes']);
+    Route::any("order_status",[\Modules\Channel\Http\Controllers\OrdersController::class,'orderStatus']);
+    Route::any('promotions/options', [\Modules\Channel\Http\Controllers\OrdersController::class, 'promotionsOptions']);
 
 });
 

+ 13 - 1
modules/Manage/Http/Controllers/MiniprogramController.php

@@ -8,6 +8,7 @@ use Modules\Manage\Enmus\MiniprogramType;
 use Modules\Manage\Http\Requests\MiniprogramRequest;
 use Modules\Manage\Http\Requests\MiniprogramUpdateRequest;
 use Modules\Manage\Models\Miniprogram;
+use Illuminate\Support\Facades\DB;
 use Log;
 
 class MiniprogramController extends Controller
@@ -28,6 +29,7 @@ class MiniprogramController extends Controller
         $name = $request->get('name');
         $play_name = $request->get('play_name');
         $company = $request->get('company');
+        $page_size = $request->input('limit', 15);
         $where = [];
         if($name){
             $where[] = ['name','like','%'.$name.'%']; 
@@ -38,7 +40,7 @@ class MiniprogramController extends Controller
         if($company){
             $where[] = ['company','like','%'.$company.'%']; 
         }
-        $result = $this->miniprogram->where($where)->paginate(20);
+        $result = $this->miniprogram->where($where)->paginate($page_size);
         foreach($result as $item){
             $item->type_name = MiniprogramType::from($item->type)->name();
             $item->status_name = $item->status == 1 ?'启用':'禁用';
@@ -99,4 +101,14 @@ class MiniprogramController extends Controller
         $data = array_map( fn($item)=>['name'=>$item->name(),'value'=>$item->value()],$type_list );
         return $data;
     }
+
+
+    /**
+     * 获取所有公司
+     *
+     * @return void
+     */
+    public function companyList(){
+        return $this->miniprogram->select(DB::raw('distinct company'))->get()->pluck('company');
+    }
 }

+ 5 - 0
modules/Manage/routes/route.php

@@ -34,5 +34,10 @@ Route::prefix('manage')->group(function(){
          Route::post('allocation/{miniprogram_id}',[UserMiniprogramController::class,'allocationStore'])
          ->withoutMiddleware(config('catch.route.middlewares'));
 
+
+        //分配小程序
+        Route::get('companylist',[MiniprogramController::class,'companyList'])
+        ->withoutMiddleware(config('catch.route.middlewares'));
+
     });
 });

+ 2 - 1
tests/Feature/MiniprogramTest.php

@@ -57,8 +57,9 @@ class MiniprogramTest extends TestCase
     public function test_index(): void
     {
         $name = '亿';
-        $response = $this->getJson('/api/channel/paytemplate/optionSequence');
         //$response = $this->getJson('/api/channel/paytemplate/optionSequence');
+        //$response = $this->getJson('/api/channel/paytemplate/optionSequence');
+        $response = $this->getJson('/api/manage/miniprogram/companylist');
         echo $response->getContent();
         $response->dd();
     }