Kirin пре 2 година
родитељ
комит
d1bd64198f

+ 24 - 0
app/controller/api/v1/user/UserController.php

@@ -10,11 +10,13 @@
 // +----------------------------------------------------------------------
 namespace app\controller\api\v1\user;
 
+use app\jobs\integral\IntegralJob;
 use app\Request;
 use app\services\product\product\StoreProductLogServices;
 use app\services\user\UserAwardIntegralServices;
 use app\services\user\UserServices;
 use app\services\wechat\WechatUserServices;
+use crmeb\services\CacheService;
 
 
 /**
@@ -278,4 +280,26 @@ class UserController
         }
         return app('json')->success($services->getIntegralList($where));
     }
+
+
+    public function extractIntegral(Request $request, UserAwardIntegralServices $services, $id)
+    {
+        $info = $services->getIntegral($id);
+        if ($info['uid'] != $request->uid()) {
+            return app('json')->fail('记录不存在');
+        }
+        if ($info['status'] != 0) {
+            return app('json')->fail('记录已出局');
+        }
+        if ($info['handle'] != 0) {
+            return app('json')->fail('记录处理中');
+        }
+        $res = $services->update($id, ['handle' => 1]);
+        if ($res) {
+            IntegralJob::dispatchDo('extract', [$id]);
+            return app('json')->success('记录已提交出局处理');
+        } else {
+            return app('json')->fail('记录提交出局处理失败');
+        }
+    }
 }

+ 21 - 0
app/jobs/integral/IntegralJob.php

@@ -89,6 +89,27 @@ class IntegralJob extends BaseJobs
         });
 
     }
+
+
+    public function extract($id)
+    {
+        /** @var UserAwardIntegralServices $awardIntegralService */
+        $awardIntegralService = app()->make(UserAwardIntegralServices::class);
+        $info = $awardIntegralService->getIntegral($id);
+        return $awardIntegralService->transaction(function () use ($info, $awardIntegralService) {
+            if ($info['status'] != 0) {
+                $awardIntegralService->update($info['id'], ['handle' => 0]);
+                return true;
+            }
+            $price = $awardIntegralService->getPrice();
+            $sum = bcmul($price, $info['num'], 2);
+            if ($sum > $info['extract_sum']) {
+                $sum = $info['extract_sum'];
+            }
+
+        });
+    }
+
     /**
      * 减积分
      * @param int $uid 用户

+ 105 - 96
app/services/system/config/SystemConfigServices.php

@@ -287,14 +287,14 @@ class SystemConfigServices extends BaseServices implements ServeConfigInterface
         return $sonConfig;
     }
 
-	/**
-	 * 获取单个系统配置
-	 * @param string $configName
-	 * @param int $type
-	 * @param int $relation_id
-	 * @param $default
-	 * @return mixed|null
-	 */
+    /**
+     * 获取单个系统配置
+     * @param string $configName
+     * @param int $type
+     * @param int $relation_id
+     * @param $default
+     * @return mixed|null
+     */
     public function getConfigValue(string $configName, int $type = 1, int $relation_id = 0, $default = null)
     {
         if ($relation_id) {//查门店、供应商
@@ -498,30 +498,30 @@ class SystemConfigServices extends BaseServices implements ServeConfigInterface
         }
     }
 
-	/**
-	 * 创建上传组件表单
-	 * @param int $type
-	 * @param array $data
-	 * @param int $admin_type
-	 * @return array
-	 */
+    /**
+     * 创建上传组件表单
+     * @param int $type
+     * @param array $data
+     * @param int $admin_type
+     * @return array
+     */
     public function createUpoadForm(int $type, array $data, int $admin_type = 0)
     {
         $formbuider = [];
-		switch ($admin_type) {
-			case 0://平台
-				$from = config('admin.admin_prefix');
-				break;
-			case 1://门店
-				$from = config('admin.store_prefix');
-				break;
-			case 2://供应商
-				$from = config('admin.supplier_prefix');
-				break;
-			default:
-				$from = config('admin.admin_prefix');
-				break;
-		}
+        switch ($admin_type) {
+            case 0://平台
+                $from = config('admin.admin_prefix');
+                break;
+            case 1://门店
+                $from = config('admin.store_prefix');
+                break;
+            case 2://供应商
+                $from = config('admin.supplier_prefix');
+                break;
+            default:
+                $from = config('admin.admin_prefix');
+                break;
+        }
         switch ($type) {
             case 1:
                 $data['value'] = json_decode($data['value'], true) ?: '';
@@ -675,16 +675,16 @@ class SystemConfigServices extends BaseServices implements ServeConfigInterface
         return $formbuider;
     }
 
-	/**
-	 * 创建
-	 * @param array $list
-	 * @param int $type
-	 * @return array
-	 * @throws \FormBuilder\Exception\FormBuilderException
-	 * @throws \think\db\exception\DataNotFoundException
-	 * @throws \think\db\exception\DbException
-	 * @throws \think\db\exception\ModelNotFoundException
-	 */
+    /**
+     * 创建
+     * @param array $list
+     * @param int $type
+     * @return array
+     * @throws \FormBuilder\Exception\FormBuilderException
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
     public function createForm(array $list, int $type = 0)
     {
         if (!$list) return [];
@@ -1416,9 +1416,9 @@ WSS;
             case 'bargain'://砍价设置
                 $data = $this->bargainFormBuild();
                 break;
-			case 'supplier_finance'://供应商财务设置
-				$data = $this->supplierFinanceFormBuild();
-				break;
+            case 'supplier_finance'://供应商财务设置
+                $data = $this->supplierFinanceFormBuild();
+                break;
             default:
                 throw new ValidateException('类型错误');
         }
@@ -1480,7 +1480,8 @@ WSS;
             'day_brokerage_price_upper', 'brokerage_type', 'user_extract_min_price', 'user_extract_bank_status',
             'user_extract_wechat_status', 'user_extract_alipay_status', 'user_extract_bank',
             'pay_weixin_client_cert', 'pay_weixin_client_key', 'withdraw_fee', 'brokerage_level', 'brokerage_compute_type',
-            'action_integral_rate','static_integral_rate','lake_ratio','static_integral_ratio','recommend_integral'
+            'action_integral_rate', 'static_integral_rate', 'lake_ratio', 'static_integral_ratio', 'recommend_integral',
+            'extract_ratio', 'extract_brokerage_ratio'
         ]);
 
         $build->rule([
@@ -1500,7 +1501,7 @@ WSS;
                             ->control(2, [
                                 Build::inputNum('store_brokerage_binding_time', $data['store_brokerage_binding_time']['info'], $data['store_brokerage_binding_time']['value'])->info($data['store_brokerage_binding_time']['desc']),
                             ])->info($data['store_brokerage_binding_status']['desc']),
-                        Build::uploadFrame('spread_banner', $data['spread_banner']['info'], $data['spread_banner']['value'])->maxNum(5)->info($data['spread_banner']['desc'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html')
+                        Build::uploadFrame('spread_banner', $data['spread_banner']['info'], $data['spread_banner']['value'])->maxNum(5)->info($data['spread_banner']['desc'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html')
                     ])->info($data['brokerage_func_status']['desc']),
             ])->option('返佣设置', [
                 Build::radio('brokerage_compute_type', $data['brokerage_compute_type']['info'], $data['brokerage_compute_type']['value'])->options($this->getOptions($data['brokerage_compute_type']['parameter']))->info($data['brokerage_compute_type']['desc']),
@@ -1518,6 +1519,8 @@ WSS;
                 Build::inputNum('recommend_integral', $data['recommend_integral']['info'], $data['recommend_integral']['value'])->min(0)->info($data['recommend_integral']['desc']),
                 Build::inputNum('static_integral_rate', $data['static_integral_rate']['info'], $data['static_integral_rate']['value'])->min(0)->info($data['static_integral_rate']['desc']),
                 Build::inputNum('action_integral_rate', $data['action_integral_rate']['info'], $data['action_integral_rate']['value'])->min(0)->info($data['action_integral_rate']['desc']),
+                Build::inputNum('extract_ratio', $data['extract_ratio']['info'], $data['extract_ratio']['value'])->min(0)->info($data['extract_ratio']['desc']),
+                Build::inputNum('extract_brokerage_ratio', $data['extract_brokerage_ratio']['info'], $data['extract_brokerage_ratio']['value'])->min(0)->info($data['extract_brokerage_ratio']['desc']),
             ])->option('提现设置', [
                 Build::alert('微信提现到零钱为自动到账(需要开通微信:企业付款到零钱(商家转账到零钱),并确保配置微信支付证书正确,特别注意:需要配置场景、开启API发起转账),其他方式均需要手动转账', Alert::WARNING)->showIcon(true),
                 Build::radio('brokerage_type', $data['brokerage_type']['info'], $data['brokerage_type']['value'])->options($this->getOptions($data['brokerage_type']['parameter']))->control(1, [
@@ -1566,11 +1569,11 @@ WSS;
                 Build::switch('integral_ratio_status', $data['integral_ratio_status']['info'], (int)$data['integral_ratio_status']['value'])
                     ->falseValue('关闭', 0)->trueValue('开启', 1)->control(1, [
                         Build::inputNum('integral_ratio', $data['integral_ratio']['info'], $data['integral_ratio']['value'])->info($data['integral_ratio']['desc'])->min(0),
-						Build::radio('integral_max_type', $data['integral_max_type']['info'], $data['integral_max_type']['value'])->control(1, [
-                        	Build::inputNum('integral_max_num', $data['integral_max_num']['info'], $data['integral_max_num']['value'])->info($data['integral_max_num']['desc'])->min(0),
-						])->control(2, [
-							Build::inputNum('integral_max_rate', $data['integral_max_rate']['info'], $data['integral_max_rate']['value'])->info($data['integral_max_rate']['desc'])->min(0),
-						])->options($this->getOptions($data['integral_max_type']['parameter']))
+                        Build::radio('integral_max_type', $data['integral_max_type']['info'], $data['integral_max_type']['value'])->control(1, [
+                            Build::inputNum('integral_max_num', $data['integral_max_num']['info'], $data['integral_max_num']['value'])->info($data['integral_max_num']['desc'])->min(0),
+                        ])->control(2, [
+                            Build::inputNum('integral_max_rate', $data['integral_max_rate']['info'], $data['integral_max_rate']['value'])->info($data['integral_max_rate']['desc'])->min(0),
+                        ])->options($this->getOptions($data['integral_max_type']['parameter']))
                     ])->info($data['integral_ratio_status']['desc']),
                 Build::inputNum('order_give_integral', $data['order_give_integral']['info'], $data['order_give_integral']['value'])->info($data['order_give_integral']['desc'])->min(0),
                 Build::radio('integral_effective_status', $data['integral_effective_status']['info'], $data['integral_effective_status']['value'])
@@ -1748,7 +1751,7 @@ WSS;
 
         $build->rule([
             Build::tabs()->option('基础信息', [
-                Build::uploadFrame('h5_avatar', $data['h5_avatar']['info'], $data['h5_avatar']['value'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html')->info($data['h5_avatar']['desc']),
+                Build::uploadFrame('h5_avatar', $data['h5_avatar']['info'], $data['h5_avatar']['value'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html')->info($data['h5_avatar']['desc']),
             ])->option('登录注册', [
                 Build::alert('多端(公众号、小程序)账号统一,可以开启强制手机号登录实现,也可以绑定微信开放平台实现:https://open.weixin.qq.com', Alert::WARNING)->showIcon(true),
                 Build::radio('store_user_mobile', $data['store_user_mobile']['info'], $data['store_user_mobile']['value'])->options($this->getOptions($data['store_user_mobile']['parameter']))->info($data['store_user_mobile']['desc'])
@@ -1850,8 +1853,8 @@ WSS;
 
         $data = $this->getConfigAllField([
             'pay_success_printing_switch', 'develop_id', 'printing_api_key', 'printing_client_id', 'terminal_number',
-			'print_type', 'fey_user', 'fey_ukey', 'fey_sn',
-			'system_product_copy_type', 'copy_product_apikey', 'logistics_type',
+            'print_type', 'fey_user', 'fey_ukey', 'fey_sn',
+            'system_product_copy_type', 'copy_product_apikey', 'logistics_type',
             'system_express_app_code', 'config_export_open', 'config_export_siid', 'config_export_to_name', 'config_export_to_tel',
             'tengxun_map_key', 'system_statistics', 'config_export_to_address', 'verify_expire_time', 'erp_open',
             'erp_type', 'jst_appkey', 'jst_appsecret', 'jst_default_shopid', 'jst_login_account', 'jst_login_password'
@@ -1860,17 +1863,17 @@ WSS;
         $build->rule([
             Build::tabs()->option('小票打印配置', [
                 Build::switch('pay_success_printing_switch', $data['pay_success_printing_switch']['info'], (int)$data['pay_success_printing_switch']['value'])->control(1, [
-					Build::radio('print_type', $data['print_type']['info'], $data['print_type']['value'])->control(1, [
-						Build::input('develop_id', $data['develop_id']['info'], $data['develop_id']['value'])->info($data['develop_id']['desc']),
-						Build::input('printing_api_key', $data['printing_api_key']['info'], $data['printing_api_key']['value'])->info($data['printing_api_key']['desc']),
-						Build::input('printing_client_id', $data['printing_client_id']['info'], $data['printing_client_id']['value'])->info($data['printing_client_id']['desc']),
-						Build::input('terminal_number', $data['terminal_number']['info'], $data['terminal_number']['value'])->info($data['terminal_number']['desc']),
-					])->control(2, [
-						Build::input('fey_user', $data['fey_user']['info'], $data['fey_user']['value'])->info($data['fey_user']['desc']),
-						Build::input('fey_ukey', $data['fey_ukey']['info'], $data['fey_ukey']['value'])->info($data['fey_ukey']['desc']),
-						Build::input('fey_sn', $data['fey_sn']['info'], $data['fey_sn']['value'])->info($data['fey_sn']['desc'])
-					])->options($this->getOptions($data['print_type']['parameter']))->info($data['print_type']['desc'])
-				])->trueValue('打开', 1)->falseValue('关闭', 0),
+                    Build::radio('print_type', $data['print_type']['info'], $data['print_type']['value'])->control(1, [
+                        Build::input('develop_id', $data['develop_id']['info'], $data['develop_id']['value'])->info($data['develop_id']['desc']),
+                        Build::input('printing_api_key', $data['printing_api_key']['info'], $data['printing_api_key']['value'])->info($data['printing_api_key']['desc']),
+                        Build::input('printing_client_id', $data['printing_client_id']['info'], $data['printing_client_id']['value'])->info($data['printing_client_id']['desc']),
+                        Build::input('terminal_number', $data['terminal_number']['info'], $data['terminal_number']['value'])->info($data['terminal_number']['desc']),
+                    ])->control(2, [
+                        Build::input('fey_user', $data['fey_user']['info'], $data['fey_user']['value'])->info($data['fey_user']['desc']),
+                        Build::input('fey_ukey', $data['fey_ukey']['info'], $data['fey_ukey']['value'])->info($data['fey_ukey']['desc']),
+                        Build::input('fey_sn', $data['fey_sn']['info'], $data['fey_sn']['value'])->info($data['fey_sn']['desc'])
+                    ])->options($this->getOptions($data['print_type']['parameter']))->info($data['print_type']['desc'])
+                ])->trueValue('打开', 1)->falseValue('关闭', 0),
             ])->option('采集商品配置', [
                 Build::radio('system_product_copy_type', $data['system_product_copy_type']['info'], $data['system_product_copy_type']['value'])->control(2, [
                     Build::input('copy_product_apikey', $data['copy_product_apikey']['info'], $data['copy_product_apikey']['value'])->info($data['copy_product_apikey']['desc'])
@@ -1946,7 +1949,7 @@ WSS;
             'company_address', 'copyright', 'seo_title', 'site_keywords', 'site_description', 'record_No',
             'wechat_open_app_id', 'wechat_open_app_secret', 'links_open', 'links_list', 'filing_list'
         ]);
-        $base[] = Build::uploadFrame('pc_logo', $data['pc_logo']['info'], $data['pc_logo']['value'])->info($data['pc_logo']['desc'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html');
+        $base[] = Build::uploadFrame('pc_logo', $data['pc_logo']['info'], $data['pc_logo']['value'])->info($data['pc_logo']['desc'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html');
         foreach (['contact_number', 'company_address', 'copyright', 'seo_title', 'site_keywords', 'site_description', 'record_No'] as $key) {
             $base[] = Build::input($key, $data[$key]['info'], $data[$key]['value'])->info($data[$key]['desc'])->type($data[$key]['type']);
         }
@@ -2030,7 +2033,7 @@ WSS;
             Build::card('微信公众号')->components([
                 Build::radio('share_qrcode', $data['share_qrcode']['info'], $data['share_qrcode']['value'])->info($data['share_qrcode']['desc'])->options($this->getOptions($data['share_qrcode']['parameter'])),
                 Build::radio('spread_share_forever', $data['spread_share_forever']['info'], $data['spread_share_forever']['value'])->info($data['spread_share_forever']['desc'])->options($this->getOptions($data['spread_share_forever']['parameter'])),
-                Build::uploadFrame('wechat_qrcode', $data['wechat_qrcode']['info'], $data['wechat_qrcode']['value'])->info($data['wechat_qrcode']['desc'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html'),
+                Build::uploadFrame('wechat_qrcode', $data['wechat_qrcode']['info'], $data['wechat_qrcode']['value'])->info($data['wechat_qrcode']['desc'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html'),
                 Build::switch('create_wechat_user', $data['create_wechat_user']['info'], (int)$data['create_wechat_user']['value'])->trueValue('开启', 1)->falseValue('关闭', 0)->info($data['create_wechat_user']['desc']),
             ]),
 //            Build::card('首页分享')->components([
@@ -2066,7 +2069,7 @@ WSS;
         $build->url('setting/config/save_basics');
 
         $data = $this->getConfigAllField([
-            'pay_weixin_open', 'pay_weixin_mchid', 'pay_weixin_key', 'paydir', 'yue_pay_status','is_cashier_yue_pay_verify', 'offline_pay_status',
+            'pay_weixin_open', 'pay_weixin_mchid', 'pay_weixin_key', 'paydir', 'yue_pay_status', 'is_cashier_yue_pay_verify', 'offline_pay_status',
             'offline_pay_status', 'ali_pay_status', 'ali_pay_appid', 'alipay_public_key', 'alipay_merchant_private_key',
             'pay_weixin_client_cert', 'pay_wechat_type', 'pay_weixin_serial_no', 'v3_pay_weixin_key', 'pay_weixin_client_key', 'pay_routine_open', 'pay_routine_mchid'
         ]);
@@ -2144,9 +2147,10 @@ WSS;
 
         $data = $this->getConfigAllField([
             'store_stock', 'order_cancel_time', 'order_activity_time',
-             'order_bargain_time', 'order_seckill_time', 'order_pink_time',
-            'system_delivery_time', 'refund_name', 'refund_phone', 'refund_address', 'stor_reason','collate_not_operating_time','reminder_deadline_second_card_time',
-            'bargain_subscribe', 'system_comment_time', 'rebate_points_orders_time', 'table_code_not_operating_time'
+            'order_bargain_time', 'order_seckill_time', 'order_pink_time',
+            'system_delivery_time', 'refund_name', 'refund_phone', 'refund_address', 'stor_reason', 'collate_not_operating_time', 'reminder_deadline_second_card_time',
+            'bargain_subscribe', 'system_comment_time', 'rebate_points_orders_time', 'table_code_not_operating_time',
+            'max_price', 'min_price', 'order_time'
             // 'store_cashier_order_rate', 'store_recharge_order_rate', 'store_self_order_rate', 'store_svip_order_rate', 'store_writeoff_order_rate'
         ]);
         $timeData[] = Build::alert('营销活动未支付时间如果设置为0将使用默认活动取消时间,优先使用单独活动配置', Alert::WARNING)->showIcon(true);
@@ -2175,6 +2179,11 @@ WSS;
                 Build::alert('输入0为不设置自动收货', Alert::WARNING)->showIcon(true),
                 Build::inputNum('system_delivery_time', $data['system_delivery_time']['info'], $data['system_delivery_time']['value'])->info($data['system_delivery_time']['desc'])->min(0),
             ]),
+            Build::card('下单设置')->components([
+                Build::inputNum('order_time', $data['order_time']['info'], $data['order_time']['value'])->info($data['order_time']['desc'])->min(0),
+                Build::inputNum('min_price', $data['min_price']['info'], $data['min_price']['value'])->info($data['min_price']['desc'])->min(0),
+                Build::inputNum('max_price', $data['max_price']['info'], $data['max_price']['value'])->info($data['max_price']['desc'])->min(0),
+            ]),
             Build::card('自动默认好评时间')->components([
                 Build::alert('输入0为不设置自动默认好评', Alert::WARNING)->showIcon(true),
                 Build::inputNum('system_comment_time', $data['system_comment_time']['info'], $data['system_comment_time']['value'])->info($data['system_comment_time']['desc'])->min(0),
@@ -2211,14 +2220,14 @@ WSS;
         }
         $setting = [];
         foreach (['site_logo', 'site_logo_square', 'login_logo', 'admin_login_slide', 'start_login_logo'] as $key) {
-            $setting[] = Build::uploadFrame($key, $data[$key]['info'], $data[$key]['value'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html')->info($data[$key]['desc'])->maxNum($key === 'admin_login_slide' ? 5 : 1);
+            $setting[] = Build::uploadFrame($key, $data[$key]['info'], $data[$key]['value'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html')->info($data[$key]['desc'])->maxNum($key === 'admin_login_slide' ? 5 : 1);
         }
         $build->rule([
             Build::tabs()->option('系统信息', [
                 Build::switch('station_open', $data['station_open']['info'], (int)$data['station_open']['value'])->control(1, $system)->trueValue('开启', 1)->falseValue('关闭', 0)->info($data['station_open']['desc']),
             ])->option('后台设置', $setting)
                 ->option('移动端设置', [
-                    Build::uploadFrame('wap_login_logo', $data['wap_login_logo']['info'], $data['wap_login_logo']['value'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html')->info($data['wap_login_logo']['desc']),
+                    Build::uploadFrame('wap_login_logo', $data['wap_login_logo']['info'], $data['wap_login_logo']['value'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html')->info($data['wap_login_logo']['desc']),
 //                Build::uploadFrame('h5_avatar', $data['h5_avatar']['info'], $data['h5_avatar']['value'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html')->info($data['h5_avatar']['desc']),
 //                Build::radio('store_user_mobile', $data['store_user_mobile']['info'], $data['store_user_mobile']['value'])->options($this->getOptions($data['store_user_mobile']['parameter']))->info($data['store_user_mobile']['desc']),
                     Build::switch('navigation_open', $data['navigation_open']['info'], (int)$data['navigation_open']['value'])->trueValue('开启', 1)->falseValue('关闭', 0)->info($data['navigation_open']['desc']),
@@ -2227,7 +2236,7 @@ WSS;
                     Build::switch('product_video_status', $data['product_video_status']['info'], (int)$data['product_video_status']['value'])->trueValue('开启', 1)->falseValue('关闭', 0)->info($data['product_video_status']['desc']),
                 ])
                 ->option('分享设置', [
-                    Build::uploadFrame('wechat_share_img', $data['wechat_share_img']['info'], $data['wechat_share_img']['value'])->info($data['wechat_share_img']['desc'])->url('/' . config('admin.admin_prefix') .  '/widget.images/index.html'),
+                    Build::uploadFrame('wechat_share_img', $data['wechat_share_img']['info'], $data['wechat_share_img']['value'])->info($data['wechat_share_img']['desc'])->url('/' . config('admin.admin_prefix') . '/widget.images/index.html'),
                     Build::input('wechat_share_title', $data['wechat_share_title']['info'], $data['wechat_share_title']['value'])->info($data['wechat_share_title']['desc']),
                     Build::input('wechat_share_synopsis', $data['wechat_share_synopsis']['info'], $data['wechat_share_synopsis']['value'])->type('textarea')->info($data['wechat_share_synopsis']['desc']),
                     Build::input('product_poster_title', $data['product_poster_title']['info'], $data['product_poster_title']['value'])->maxlength(25)->info($data['product_poster_title']['desc']),
@@ -2259,8 +2268,8 @@ WSS;
             Build::card('门店设置')->components([
                 Build::switch('store_func_status', $data['store_func_status']['info'], (int)$data['store_func_status']['value'])
                     ->falseValue('关闭', 0)->trueValue('开启', 1)->control(1, [
-						Build::switch('store_self_mention', $data['store_self_mention']['info'], (int)$data['store_self_mention']['value'] > 0 ? 1 : 0)
-							->falseValue('关闭', 0)->trueValue('开启', 1)->info($data['store_self_mention']['desc'] ?? ''),
+                        Build::switch('store_self_mention', $data['store_self_mention']['info'], (int)$data['store_self_mention']['value'] > 0 ? 1 : 0)
+                            ->falseValue('关闭', 0)->trueValue('开启', 1)->info($data['store_self_mention']['desc'] ?? ''),
                         Build::switch('store_delivery_scope', $data['store_delivery_scope']['info'], (int)$data['store_delivery_scope']['value'])
                             ->falseValue('关闭', 0)->trueValue('开启', 1)->info($data['store_delivery_scope']['desc']),
                         Build::switch('store_splicing_switch', $data['store_splicing_switch']['info'], (int)$data['store_splicing_switch']['value'])
@@ -2345,28 +2354,28 @@ WSS;
         return $build->toArray();
     }
 
-	/**
-	 * 供应商财务设置
-	 * @return array
-	 */
-	public function supplierFinanceFormBuild()
-	{
-		$build = new Build();
-		$build->url('setting/config/save_basics');
-
-		$data = $this->getConfigAllField([ 'supplier_extract_min_price', 'supplier_extract_max_price']);
-
-		$build->rule([
-			Build::tabs()->option('财务设置', [
-				Build::inputNum('supplier_extract_min_price', $data['supplier_extract_min_price']['info'], $data['supplier_extract_min_price']['value'])
-					->info($data['supplier_extract_min_price']['desc'])->min(0),
-				Build::inputNum('supplier_extract_max_price', $data['supplier_extract_max_price']['info'], $data['supplier_extract_max_price']['value'])
-					->info($data['supplier_extract_max_price']['desc'])->min(0),
-			])
-		]);
-
-		return $build->toArray();
-	}
+    /**
+     * 供应商财务设置
+     * @return array
+     */
+    public function supplierFinanceFormBuild()
+    {
+        $build = new Build();
+        $build->url('setting/config/save_basics');
+
+        $data = $this->getConfigAllField(['supplier_extract_min_price', 'supplier_extract_max_price']);
+
+        $build->rule([
+            Build::tabs()->option('财务设置', [
+                Build::inputNum('supplier_extract_min_price', $data['supplier_extract_min_price']['info'], $data['supplier_extract_min_price']['value'])
+                    ->info($data['supplier_extract_min_price']['desc'])->min(0),
+                Build::inputNum('supplier_extract_max_price', $data['supplier_extract_max_price']['info'], $data['supplier_extract_max_price']['value'])
+                    ->info($data['supplier_extract_max_price']['desc'])->min(0),
+            ])
+        ]);
+
+        return $build->toArray();
+    }
 
     /**
      * 获取缩略图配置

+ 1 - 0
route/api.php

@@ -268,6 +268,7 @@ Route::group('api', function () {
 
         //积分类
         Route::get('award_integral/:type', 'v1.user.UserController/awardIntegralList')->name('awardIntegralList');//活动积分详情
+        Route::post('award_integral/:id', 'v1.user.UserController/extractIntegral')->name('extractIntegral');//提取积分
 
         //用户类  地址
         Route::get('address/detail/:id', 'v1.user.UserAddressController/address')->name('address');//获取单个地址