400 lines
14 KiB
PHP
400 lines
14 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Created by PhpStorm.
|
|
* Author:
|
|
* Date: 17/3/8
|
|
* Time: 上午10:11
|
|
*/
|
|
|
|
namespace app\backend\modules\member\controllers;
|
|
|
|
use app\backend\modules\member\models\Member;
|
|
use app\backend\modules\member\models\MemberRelation;
|
|
use app\backend\modules\member\models\MemberShopInfo;
|
|
use app\backend\modules\member\services\FansItemService;
|
|
use app\common\components\BaseController;
|
|
use app\backend\modules\member\models\MemberRelation as Relation;
|
|
use app\common\facades\Setting;
|
|
use app\common\helpers\Cache;
|
|
use app\common\helpers\PaginationHelper;
|
|
use app\common\helpers\Url;
|
|
use app\common\models\Goods;
|
|
use app\common\models\notice\MessageTemp;
|
|
use app\common\services\ExportService;
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
|
|
|
|
class MemberRelationController extends BaseController
|
|
{
|
|
public $pageSize = 20;
|
|
|
|
/**
|
|
* 加载模板
|
|
* @return string
|
|
* @throws \Throwable
|
|
*/
|
|
public function index()
|
|
{
|
|
return view('member.relation', [])->render();
|
|
}
|
|
|
|
/**
|
|
* 列表
|
|
* @return string
|
|
* @throws \Throwable
|
|
*/
|
|
public function show()
|
|
{
|
|
$relation = Relation::uniacid()->first();
|
|
$setting = \Setting::get('member.relation');
|
|
|
|
if (!empty($relation)) {
|
|
$relation = $relation->toArray();
|
|
}
|
|
|
|
if (!empty($relation['become_term'])) {
|
|
$relation['become_term'] = unserialize($relation['become_term']);
|
|
}
|
|
|
|
if (!empty($relation['become_goods'])) {
|
|
$relation_goods = unserialize($relation['become_goods']);
|
|
$goods_ids = [];
|
|
foreach ($relation_goods as $item) {
|
|
$goods_ids[] = $item['goods_id'];
|
|
}
|
|
// 查询当前未被删除的商品
|
|
$current_goods = Goods::uniacid()->select('id', 'title', 'thumb')
|
|
->whereIn('id', $goods_ids)
|
|
->whereNull('deleted_at')
|
|
->get();
|
|
if ($current_goods) {
|
|
$current_goods = $current_goods->toArray();
|
|
foreach ($current_goods as $key => $value) {
|
|
$current_goods[$key]['thumb'] = yz_tomedia($value['thumb']);
|
|
}
|
|
$goods = $current_goods;
|
|
} else {
|
|
$goods = [];
|
|
}
|
|
} else {
|
|
$goods = [];
|
|
}
|
|
$relationship = [
|
|
'status' => $relation['status'],
|
|
'become' => $relation['become'],
|
|
'become_term2' => empty($relation['become_term'][2]) ? "" : 2,
|
|
'become_ordercount' => $relation['become_ordercount'],
|
|
'become_term3' => empty($relation['become_term'][3]) ? "" : 3,
|
|
'become_moneycount' => $relation['become_moneycount'],
|
|
'become_term4' => empty($relation['become_term'][4]) ? "" : 4,
|
|
'goods' => $goods,
|
|
'is_sales_commission' => app('plugins')->isEnabled('sales-commission') ? 1 : 0,
|
|
'become_term5' => empty($relation['become_term'][5]) ? "" : 5,
|
|
'become_selfmoney' => $relation['become_selfmoney'],
|
|
'become_order' => $relation['become_order'],
|
|
'become_child' => $relation['become_child'],
|
|
'become_check' => $relation['become_check'],
|
|
];
|
|
|
|
$reward = [
|
|
'reward_points' => $relation['reward_points'],
|
|
'maximum_number' => $relation['maximum_number']
|
|
];
|
|
|
|
$page = [
|
|
'is_jump' => $setting['is_jump'],
|
|
'jump_link' => $setting['jump_link'],
|
|
'small_jump_link' => $setting['small_jump_link'],
|
|
'share_page' => $relation['share_page'],
|
|
'share_page_deail' => $relation['share_page_deail'],
|
|
];
|
|
return $this->successJson('ok', [
|
|
'relationship' => $relationship,
|
|
'reward' => $reward,
|
|
'page' => $page
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 保存关系链数据
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function save()
|
|
{
|
|
$setData = $this->setData(\YunShop::request()->setdata);
|
|
$setting = \YunShop::request()->setting;
|
|
if ($setting) {
|
|
\Setting::set('member.relation', $setting);
|
|
}
|
|
$setData['uniacid'] = \YunShop::app()->uniacid;
|
|
|
|
if (empty($setData['become_order'])) {
|
|
$setData['become_order'] = 0;
|
|
}
|
|
|
|
if (empty($setData['become_ordercount'])) {
|
|
$setData['become_ordercount'] = 0;
|
|
}
|
|
|
|
if (!empty($setData['become_term'])) {
|
|
$setData['become_term'] = serialize($setData['become_term']);
|
|
} else {
|
|
$setData['become_term'] = '';
|
|
}
|
|
|
|
if (empty($setData['become_moneycount'])) {
|
|
$setData['become_moneycount'] = 0;
|
|
}
|
|
|
|
$setData['become_goods_id'] = !empty($setData['become_goods_id']) ? implode(
|
|
',',
|
|
$setData['become_goods_id']
|
|
) : 0;
|
|
|
|
$setData['become_goods'] = !empty($setData['become_goods']) ? serialize($setData['become_goods']) : 0;
|
|
// dd($setData['become_goods']);
|
|
if (empty($setData['become_selfmoney'])) {
|
|
$setData['become_selfmoney'] = 0;
|
|
}
|
|
|
|
$relation = Relation::uniacid()->first();
|
|
|
|
if (!empty($relation)) {
|
|
$relation->setRawAttributes($setData);
|
|
(new \app\common\services\operation\RelationLog($relation, 'update'));
|
|
$relation->save();
|
|
} else {
|
|
Relation::create($setData);
|
|
}
|
|
|
|
Cache::forget('member_relation');
|
|
return $this->successJson('ok', ['data' => true]);
|
|
}
|
|
|
|
/**
|
|
* 成为推广员 指定商品查询
|
|
*
|
|
* @return string
|
|
*/
|
|
public function query()
|
|
{
|
|
$kwd = trim(\YunShop::request()->keyword);
|
|
|
|
$goods_model = Goods::getGoodsByNameNew($kwd);
|
|
|
|
if (!empty($goods_model)) {
|
|
$data = $goods_model->toArray();
|
|
|
|
foreach ($data['data'] as &$good) {
|
|
$good['thumb'] = tomedia($good['thumb']);
|
|
}
|
|
} else {
|
|
$data = [];
|
|
}
|
|
|
|
return $this->successJson('ok', $data);
|
|
}
|
|
|
|
/**
|
|
* 加载模板 -- 资格申请
|
|
* @return string
|
|
* @throws \Throwable
|
|
*/
|
|
public function apply()
|
|
{
|
|
return view('member.apply', [])->render();
|
|
}
|
|
|
|
/**
|
|
* 会员资格申请列表
|
|
*
|
|
* @return string
|
|
*/
|
|
public function applyShow()
|
|
{
|
|
$requestSearch = \YunShop::request()->search;
|
|
$list = Member::getMembersToApply($requestSearch)
|
|
->paginate($this->pageSize)
|
|
->toArray();
|
|
|
|
|
|
return $this->successJson('ok', [
|
|
'list' => (new FansItemService())->setFansItem($list),
|
|
'total' => $list['total'],
|
|
'requestSearch' => $requestSearch
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 申请协议
|
|
*
|
|
* @return mixed|string
|
|
*/
|
|
public function applyProtocol()
|
|
{
|
|
$info = Setting::get("apply_protocol");
|
|
|
|
$requestProtocol = \YunShop::request()->protocol;
|
|
if ($requestProtocol) {
|
|
$request = Setting::set('apply_protocol', $requestProtocol);
|
|
if ($request) {
|
|
return $this->message('保存成功', Url::absoluteWeb('member.member-relation.apply-protocol'));
|
|
}
|
|
}
|
|
return $this->successJson('ok', ['info' => $info]);
|
|
}
|
|
|
|
public function base()
|
|
{
|
|
return view('member.relation-base', [])->render();
|
|
}
|
|
|
|
public function relationBase()
|
|
{
|
|
$info = \Setting::get('shop.relation_base');
|
|
|
|
$base = \YunShop::request()->base;
|
|
|
|
if ($base) {
|
|
$request = Setting::set('shop.relation_base', $base);
|
|
if ($request) {
|
|
return $this->successJson('数据保存成功', $request);
|
|
}
|
|
}
|
|
|
|
$temp_list = MessageTemp::getList();
|
|
$notice = [
|
|
'member_agent' => $info['member_agent'],
|
|
'member_new_lower' => $info['member_new_lower'],
|
|
];
|
|
$member_relation = [
|
|
'is_referrer' => empty($info['is_referrer']) ? '0' : $info['is_referrer'],
|
|
'parent_is_referrer' => empty($info['parent_is_referrer']) ? '0' : $info['parent_is_referrer'],
|
|
'is_recommend_wechat' => empty($info['is_recommend_wechat']) ? '0' : $info['is_recommend_wechat'],
|
|
'one_level' => $info['relation_level'][0],
|
|
'name1' => $info['relation_level']['name1'],
|
|
'two_level' => $info['relation_level'][1],
|
|
'name2' => $info['relation_level']['name2'],
|
|
'phone' => $info['relation_level']['phone'],
|
|
'realname' => $info['relation_level']['realname'],
|
|
'wechat' => $info['relation_level']['wechat'],
|
|
'is_statistical_goods' => $info['is_statistical_goods'],
|
|
'statistical_goods' => $info['statistical_goods']
|
|
];
|
|
$member_merge = [
|
|
'is_member_merge' => $info['is_member_merge'],
|
|
'is_merge_save_level' => empty($info['is_merge_save_level']) ? 0 : $info['is_merge_save_level']
|
|
];
|
|
|
|
return $this->successJson('ok', [
|
|
'banner' => yz_tomedia($info['banner']),
|
|
'notice' => $notice,
|
|
'temp_list' => $temp_list,
|
|
'member_relation' => $member_relation,
|
|
'member_merge' => $member_merge,
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 验证是否开启默认模板
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function getIsDefaultById()
|
|
{
|
|
if (MessageTemp::uniacid()->where('id', request()->id)->where('is_default', 1)->first()) {
|
|
return $this->successJson('ok', ['data' => true]);
|
|
}
|
|
return $this->successJson('ok', ['data' => false]);
|
|
}
|
|
|
|
/**
|
|
* 检查审核
|
|
*
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function chkApply()
|
|
{
|
|
$id = \YunShop::request()->id;
|
|
|
|
$member_shop_info_model = MemberShopInfo::getMemberShopInfo($id);
|
|
|
|
if ($member_shop_info_model) {
|
|
$member_shop_info_model->is_agent = 1;
|
|
$member_shop_info_model->status = 2;
|
|
|
|
if ($member_shop_info_model->inviter == 0) {
|
|
$member_shop_info_model->inviter = 1;
|
|
}
|
|
|
|
if ($member_shop_info_model->save()) {
|
|
Member::setMemberRelation($member_shop_info_model->member_id, $member_shop_info_model->parent_id);
|
|
|
|
Relation::sendGeneralizeNotify($member_shop_info_model->member_id);
|
|
|
|
return $this->successJson('审核通过', ['data' => true]);
|
|
} else {
|
|
return $this->errorJson('审核失败');
|
|
}
|
|
} else {
|
|
return $this->errorJson('会员不存在');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 数据导出
|
|
*
|
|
*/
|
|
public function export()
|
|
{
|
|
$file_name = date('Ymdhis', time()) . '会员资格申请导出';
|
|
|
|
$requestSearch = \YunShop::request()->search;
|
|
|
|
$list = Member::getMembersToApply($requestSearch);
|
|
$export_page = request()->export_page ? request()->export_page : 1;
|
|
|
|
$export_model = new ExportService($list, $export_page);
|
|
$file_name = date('Ymdhis', time()) . '会员导出' . $export_page;
|
|
|
|
$export_data[0] = ['会员ID', '推荐人姓名', '粉丝姓名', '会员姓名', '手机号', '申请时间'];
|
|
|
|
foreach ($list->get()->toArray() as $key => $item) {
|
|
if (!empty($item['yz_member']) && !empty($item['yz_member']['agent'])) {
|
|
$agent_name = $item['yz_member']['agent']['nickname'];
|
|
} else {
|
|
$agent_name = '';
|
|
}
|
|
|
|
$export_data[$key + 1] = [
|
|
$item['uid'],
|
|
$agent_name,
|
|
$item['nickname'],
|
|
$item['realname'],
|
|
$item['mobile'],
|
|
date('Y.m.d', $item['yz_member']['apply_time'])
|
|
];
|
|
}
|
|
// 此处参照商城订单管理的导出接口
|
|
app('excel')->store(new \app\exports\FromArray($export_data), $file_name . '.xlsx', 'export');
|
|
app('excel')->download(new \app\exports\FromArray($export_data), $file_name . '.xlsx')->send();
|
|
}
|
|
|
|
protected function setData($setData)
|
|
{
|
|
$setData['become'] = empty($setData['become']) ? 0 : $setData['become'];
|
|
$setData['become_check'] = empty($setData['become_check']) ? 0 : $setData['become_check'];
|
|
$setData['become_order'] = empty($setData['become_order']) ? 0 : $setData['become_order'];
|
|
$setData['become_child'] = empty($setData['become_child']) ? 0 : $setData['become_child'];
|
|
$setData['become_ordercount'] = empty($setData['become_ordercount']) ? 0 : $setData['become_ordercount'];
|
|
$setData['become_moneycount'] = empty($setData['become_moneycount']) ? 0.00 : $setData['become_moneycount'];
|
|
$setData['become_info'] = empty($setData['become_info']) ? 1 : $setData['become_info'];
|
|
$setData['share_page'] = empty($setData['share_page']) ? 1 : $setData['share_page'];
|
|
$setData['share_page_deail'] = empty($setData['share_page_deail']) ? 0 : $setData['share_page_deail'];
|
|
$setData['reward_points'] = empty($setData['reward_points']) ? 0 : $setData['reward_points'];
|
|
$setData['maximum_number'] = empty($setData['maximum_number']) ? 0 : $setData['maximum_number'];
|
|
return $setData;
|
|
}
|
|
}
|