| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401 |
- <?php
- /****************************************************************
- * Author: libaojia
- * Date: 2017/8/25 下午1:51
- * Email: livsyitian@163.com
- * QQ: 995265288
- * User: 芸众商城 www.yunzshop.com
- ****************************************************************/
- namespace app\frontend\modules\from\controllers;
- use app\common\components\ApiController;
- use app\common\models\Goods;
- use app\common\models\GoodsCategory;
- use app\common\models\order\OrderInvoice;
- use app\common\services\DivFromService;
- use app\common\services\IDCardService;
- use app\framework\Http\Request;
- use app\frontend\models\Member;
- use app\common\models\MemberCertified;
- use Yunshop\Invoice\models\InvoiceCategory;
- use Yunshop\Invoice\models\InvoiceGoods;
- use Yunshop\Invoice\models\InvoiceRelation;
- use Yunshop\Invoice\models\InvoiceRise;
- class DivFromController extends ApiController
- {
- /**
- * 商品表单是否显示
- * @return \Illuminate\Http\JsonResponse
- */
- public function isDisplay(Request $request, $integrated = null)
- {
- $goods_ids = json_decode(request()->input('goods_ids'),true);
- if (!is_array($goods_ids)) {
- if(is_null($integrated)){
- return $this->errorJson('未获取到商品ID集');
- }else{
- return show_json(0,'未获取到商品ID');
- }
- }
- $status = DivFromService::isDisplay($goods_ids,\YunShop::app()->getMemberId());
- if(is_null($integrated)){
- return $this->successJson('ok',['status'=> $status,'member_status'=>DivFromService::getMemberStatus(\YunShop::app()->getMemberId())]);
- }else{
- return show_json(1,['status'=> $status,'member_status'=>DivFromService::getMemberStatus(\YunShop::app()->getMemberId())]);
- }
- }
- /**
- * 商品表单规则说明
- * @return \Illuminate\Http\JsonResponse
- */
- public function explain(Request $request, $integrated = null)
- {
- $explain = array_pluck(\Setting::getAllByGroup('div_from')->toArray(), 'value', 'key');
- if (is_null($integrated)){
- return $this->successJson('ok',$explain );
- }else{
- return show_json(1,$explain);
- }
- }
- /**
- * 商品表单规则说明
- * @return \Illuminate\Http\JsonResponse
- */
- public function deliveryTime(Request $request, $integrated = null)
- {
- $delivery_time = \Setting::get('shop.trade.delivery_time') ? 1 : 0;
- $deliveryTime = [
- 'status' => $delivery_time,
- 'time' => [
- '8:00 - 10:00',
- '10:00 - 12:00',
- '14:00 - 16:00',
- '16:00 - 18:00',
- ]
- ];
- if (is_null($integrated)){
- return $this->successJson('ok',$deliveryTime );
- }else{
- return show_json(1,$deliveryTime);
- }
- }
- //判断是否开启发票
- public function isinvoice(Request $request, $integrated = null)
- {
- $mid = \YunShop::app()->getMemberId();
- $setting = \Setting::get('plugin.invoice');//新发票设置
- //发票类型
- $type = [
- 0 => '电子发票',
- 1 => '纸质发票',
- 2 => '专用发票',
- ];
- //发票内容
- $content_type = [
- 0 => '商品明细',
- 1 => '商品类型',
- ];
- $invoice_type = $content = $rises = [];
- $tax_rate = 0;
- if (app('plugins')->isEnabled('invoice') && $setting['is_open']) {
- $is_notice = $is_content = 1;
- $rise = InvoiceRise::uniacid()
- ->where('member_id', $mid)
- ->get();
- $rise = $rise->isEmpty() ? [] : $rise->toArray();
- foreach ($rise as $value) {
- $default_rise = [
- 'collect_name' => $value['collect_name'],
- 'gmf_taxpayer' => $value['tax_num'],
- 'gmf_bank_admin' => $value['bank_admin'],
- 'gmf_address' => $value['address'],
- 'gmf_bank' => $value['bank'],
- 'gmf_mobile' => $value['mobile'],
- 'col_address' => $value['address'],
- 'email' => $value['email']
- ];
- if ($value['type'] == '0') {
- $rises['personal'][] = $value;
- $value['is_default'] == 1 && $personal_default_rise = $default_rise;
- }
- if ($value['type'] == '1') {
- $rises['company'][] = $value;
- $value['is_default'] == 1 && $unit_default_rise = $default_rise;
- }
- }
- $tax_rate = $this->goTaxRate() ?: 0;
- foreach ($setting['content'] as $value) {
- $content[] = [
- 'name' => $content_type[$value],
- 'value' => $value
- ];
- }
- foreach ($content as $key => $item) {
- if (!$item['name']) {
- unset($content[$key]);
- }
- }
- foreach ($setting['invoice_type'] as $value) {
- $invoice_type[] = [
- 'name' => $type[$value],
- 'value' => $value
- ];
- }
- foreach ($invoice_type as $key => $item) {
- if (!$item['name']) {
- unset($invoice_type[$key]);
- }
- }
- } else {
- $is_notice = $is_content = 0;
- //旧发票(商城设置)
- $trade = \Setting::get('shop.trade');
- $trade_invoice_set = [
- //电子
- 0 => [
- 'type_name' => $type[0],
- 'is_open' => $trade['invoice']['electron'] ?? 0
- ],
- //纸质
- 1 => [
- 'type_name' => $type[1],
- 'is_open' => $trade['invoice']['papery'] ?? 0
- ],
- ];
- foreach ($trade_invoice_set as $key => $value) {
- if ($value['is_open']) {
- $invoice_type[] = [
- 'name' => $value['type_name'],
- 'value' => $key
- ];
- }
- }
- foreach ($invoice_type as $key => $item) {
- if (!$item['name']) {
- unset($invoice_type[$key]);
- }
- }
- }
- // $sql_select = ['id', 'collect_name', 'email', 'gmf_taxpayer as tax_num', 'gmf_bank_admin as bank_admin', 'gmf_address as address', 'gmf_bank as bank', 'gmf_mobile as mobile', 'col_address', 'col_name', 'col_mobile', 'content'];
- $sql_select = ['id', 'collect_name', 'email', 'gmf_taxpayer', 'gmf_bank_admin', 'gmf_address', 'gmf_bank', 'gmf_mobile', 'col_address', 'col_name', 'col_mobile', 'content'];
- $sqlData = [
- 'personal' => [
- 'where' => ['rise_type' => 1],
- ],
- 'unit' => [
- 'where' => ['rise_type' => 0],
- ],
- 'special' => [
- 'where' => ['invoice_type' => 2],
- ],
- ];
- //最近订单发票
- $default_rise = [];
- foreach ($sqlData as $key => $value) {
- if (in_array($key,['personal','unit'])) {
- $default_rise[$key] = OrderInvoice::uniacid()->select($sql_select)->where($value['where'])->where('invoice_type','!=',2)->where('uid',$mid)->orderBy('created_at','desc')->first();
- } else {
- $default_rise[$key] = OrderInvoice::uniacid()->select($sql_select)->where($value['where'])->where('uid',$mid)->orderBy('created_at','desc')->first();
- }
- }
- // //收票人信息
- // $default_rise['taker_info'] = [
- // //电子
- // 'electronic' => OrderInvoice::uniacid()->select('col_mobile', 'email')->where('invoice_type', 0)->orderBy('created_at','desc')->first(),
- // //纸质
- // 'paper' => OrderInvoice::uniacid()->select('col_name', 'col_mobile', 'col_address')->where('invoice_type', 1)->orderBy('created_at', 'desc')->first(),
- // //专用
- // 'special' => OrderInvoice::uniacid()->select('col_name', 'col_mobile', 'col_address')->where('invoice_type', 2)->orderBy('created_at','desc')->first(),
- // ];
- !empty($personal_default_rise) && $default_rise['personal'] = $personal_default_rise;
- !empty($unit_default_rise) && $default_rise['unit'] = $unit_default_rise;
- $result = [
- // 'is_open' => empty($setting['is_open']) ? 0 : $setting['is_open'],
- 'is_open' => !empty($invoice_type) ? 1 : 0,
- 'invoice_type' => $invoice_type,
- 'content' => $content,
- 'is_notice' => $is_notice,//1-显示发票须知,0-不显示
- 'is_content' => $is_content,//1-显示发票内容,0-不显示
- 'notice' => empty($setting['notice']) ? '' : $setting['notice'],
- 'rises' => $rises,
- 'tax_rate' => $tax_rate,
- 'default_rise' => $default_rise,
- // 'default_rise' => array_filter($default_rise),
- ];
- return show_json(1, $result);
- }
- /**
- * 修改会员真实姓名、身份证ID
- * @return \Illuminate\Http\JsonResponse
- */
- public function updateMemberInfo()
- {
- $member_name = \YunShop::request()->member_name;
- if (!$member_name) {
- return $this->errorJson('会员真实名称不能为空');
- }
- $member_card = \YunShop::request()->member_card;
- if (!$member_card) {
- return $this->errorJson('会员身份证号码不能为空');
- }
- if (!IDCardService::isCard($member_card)) {
- return $this->errorJson('请输入正确的身份证号码');
- }
- if (!\YunShop::app()->getMemberId()) {
- return $this->errorJson('未获取到会员ID');
- }
- Member::where('uid', \YunShop::app()->getMemberId())->update(['realname' => $member_name, 'idcard' => $member_card]);
- MemberCertified::insertData(array(
- 'uniacid' => \YunShop::app()->uniacid,
- 'member_id' => \YunShop::app()->getMemberId(),
- 'realname' => $member_name,
- 'idcard' => $member_card,
- 'remark' => '表单修改实名信息',
- 'created_at' => time(),
- 'updated_at' => time()
- ));
- return $this->successJson('ok');
- }
- public function getMemberInfo(Request $request, $integrated = null)
- {
- $MemberInfo = DivFromService::getMemberCardAndName(\YunShop::app()->getMemberId());
- if (!$MemberInfo) {
- if(is_null($integrated)){
- return $this->errorJson('未获取到会员信息!!');
- }else{
- return show_json(1,'未获取到会员信息!!');
- }
- }
- if(is_null($integrated)){
- return $this->successJson('ok',$MemberInfo);
- }else{
- return show_json(1,$MemberInfo);
- }
- }
- private function getCouponSet(Request $request, $integrated = null)
- {
- $couponSet = \Setting::get('shop.coupon')['coupon_remind'] ?: '0';
- if(is_null($integrated)){
- return $this->successJson('ok',$couponSet);
- }else{
- return show_json(1,$couponSet);
- }
- }
- public function getParams(Request $request)
- {
- //判断是否开启发票
- $this->dataIntegrated($this->isinvoice($request, true), 'sinvoice');
- //商品表单是否显示
- $this->dataIntegrated($this->isDisplay($request, true), 'isDisplay');
- //获取会员详情
- $this->dataIntegrated($this->getMemberInfo($request, true), 'getMemberInfo');
- //商品表单规则说明
- $this->dataIntegrated($this->explain($request, true), 'explain');
- //共享链支付协议
- $this->dataIntegrated(\app\frontend\modules\shop\controllers\IndexController::getPayProtocol($request, true),'getPayProtocol');
- //判断是否开启下单提示使用优惠券
- $this->dataIntegrated($this->getCouponSet($request, true), 'getCouponSet');
- $this->dataIntegrated($this->getStoreSearch($request, true), 'storeSearch');
- //运费说明
- $this->dataIntegrated($this->getFreightExplain($request,true),'freightExplain');
- //配送时间
- $this->dataIntegrated($this->deliveryTime($request,true),'deliveryTime');
- return $this->successJson('', $this->apiData);
- }
- private function getStoreSearch(Request $request, $integrated = null)
- {
- $data=[];
- if(app('plugins')->isEnabled('store-search'))
- {
- $store_search_set = \Setting::get('plugin.store-search');
- if($store_search_set['is_open_but'])
- {
- $data =[
- 'is_open_but'=>$store_search_set['is_open_but'],
- 'but_title'=> $store_search_set['but_title'],
- 'web_url'=>$store_search_set['web_url'],
- 'app_url'=>$store_search_set['app_url'],
- ];
- }
- }
- if(is_null($integrated))
- {
- return $this->successJson('ok',$data);
- }
- else
- {
- return show_json(1,$data);
- }
- }
- private function getFreightExplain(Request $request, $integrated = null)
- {
- $shopOrderSet = \Setting::get('shop.order');
- $freightExplainSet = [
- 'is_freight_explain' => $shopOrderSet['is_freight_explain'] ?? 0,
- 'freight_explain_content' => explode("\n",$shopOrderSet['freight_explain_content']) ?? []
- ];
- if (is_null($integrated)) {
- return $this->successJson('ok',$freightExplainSet);
- } else {
- return show_json(1,$freightExplainSet);
- }
- }
- private function goTaxRate()
- {
- $goods_id = request()->input('goods_id');
- $good_tax_rate = InvoiceRelation::uniacid()->where('goods_id', $goods_id)->pluck('tax_rate');
- $good_tax_rate = empty($good_tax_rate) ? [] : array_unique($good_tax_rate->toArray());
- if (!$good_tax_rate) {
- $category_id = GoodsCategory::where('goods_id', $goods_id)->pluck('category_id');
- $category_id = empty($category_id) ? [] : $category_id->toArray();
- if ($category_id) {
- $good_tax_rate = InvoiceCategory::uniacid()->where('category_id', $category_id)->pluck('tax_rate');
- $good_tax_rate = empty($good_tax_rate) ? [] : array_unique($good_tax_rate->toArray());
- }
- }
- return $good_tax_rate;
- }
- }
|