parent
a7f69f600d
commit
cef2eaa33a
|
|
@ -0,0 +1,136 @@
|
|||
<?php
|
||||
namespace app\backend\modules\order\controllers;
|
||||
|
||||
use app\common\components\BaseController;
|
||||
use app\common\models\Goods;
|
||||
use app\common\models\Member;
|
||||
use app\frontend\modules\member\services\MemberCartService;
|
||||
use app\frontend\modules\memberCart\MemberCartCollection;
|
||||
|
||||
/**
|
||||
* Common: 模拟下单 模拟用户下单并且支付,数据为真实数据,慎用!!!
|
||||
* Author: wu-hui
|
||||
* Time: 2023/12/06 9:18
|
||||
* Class ImitateCreateOrderController
|
||||
* @package app\backend\modules\order\controllers
|
||||
*/
|
||||
class ImitateCreateOrderController extends BaseController{
|
||||
|
||||
|
||||
|
||||
public function useInlet(){
|
||||
debug("暂停开发,暂不使用...");
|
||||
// 获取要处理的列表
|
||||
$list = $this->getList();
|
||||
// 循环处理
|
||||
foreach($list as $key => $createOrderInfo){
|
||||
try{
|
||||
echo "<hr />";
|
||||
echo "开始处理第 {$key} 条数据:<br />UID-{$createOrderInfo['uid']} 购买的{$createOrderInfo['total']}个 {$createOrderInfo['goods_name']}";
|
||||
// 模拟下单
|
||||
$this->imitateCreateOrderOperate($createOrderInfo);
|
||||
|
||||
|
||||
|
||||
echo "<br />处理完成 - SUCCESS";
|
||||
}catch(\Exception $e){
|
||||
echo "<br />处理完成 - <span style='color: red;'>处理失败</span>:".$e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
debug("数据处理完成");
|
||||
}
|
||||
// 获取数据列表 - 调试数据
|
||||
private function getList(){
|
||||
// 获取用户信息
|
||||
$userIds = Member::uniacid()->pluck('uid')->toArray();
|
||||
// 获取商户信息
|
||||
$goodsList = Goods::uniacid()->select(['id','title'])->get()->keyBy('id')->toArray();
|
||||
$goodsIds = array_column($goodsList,'id');
|
||||
// 生成数据
|
||||
$list = [];
|
||||
for($i = 1; $i <= 3 ; $i++){
|
||||
$currentGoodsId = $goodsIds[array_rand($goodsIds)];
|
||||
$currentUid = $userIds[array_rand($userIds)];
|
||||
$list[] = [
|
||||
'goods_name' => $goodsList[$currentGoodsId]['title'],
|
||||
'goods_id' => $currentGoodsId,
|
||||
'uid' => $currentUid,
|
||||
'total' => rand(1,10),
|
||||
'time' => time()
|
||||
];
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
// 模拟下单 暂停开发,暂不使用
|
||||
private function imitateCreateOrderOperate($createOrderInfo){
|
||||
|
||||
|
||||
|
||||
// request()->goods = [
|
||||
// 'goods_id' => $createOrderInfo['goods_id'],
|
||||
// 'total' => $createOrderInfo['total'],
|
||||
// 'option_id' => 0,
|
||||
// ];
|
||||
|
||||
|
||||
|
||||
debug(request()->input());
|
||||
//订单组
|
||||
|
||||
$trade = $this->getMemberCarts()->getTrade(Member::find($createOrderInfo['uid']));
|
||||
$trade->generate();
|
||||
$orderIds = $trade->orders->pluck('id')->implode(',');
|
||||
//生成订单,触发事件
|
||||
|
||||
|
||||
debug(['orderIds'=>$orderIds]);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @return static
|
||||
*/
|
||||
private function _getMemberCarts()
|
||||
{
|
||||
$goods_params = is_array(request()->input('goods')) ? request()->input('goods') : json_decode(request()->input('goods'), true);
|
||||
|
||||
debug([$goods_params]);
|
||||
$memberCarts = collect($goods_params)->map(function ($memberCart) {
|
||||
return MemberCartService::newMemberCart($memberCart);
|
||||
});
|
||||
return $memberCarts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return MemberCartCollection
|
||||
* @throws \app\common\exceptions\AppException
|
||||
*/
|
||||
private function getMemberCarts()
|
||||
{
|
||||
if (!isset($this->memberCarts)) {
|
||||
|
||||
$memberCarts = new MemberCartCollection($this->_getMemberCarts());
|
||||
$memberCarts->loadRelations();
|
||||
$memberCarts->validate();
|
||||
$this->memberCarts = $memberCarts;
|
||||
}
|
||||
|
||||
return $this->memberCarts;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -96,6 +96,7 @@ class MemberInfoController extends ApiController
|
|||
'avatar_image' => $member['avatar_image'],
|
||||
'can_update_nickname' => $formSet['base']['change_info'] ? 1 : 0,
|
||||
'can_update_avatar' => $formSet['base']['change_info'] ? 1 : 0,
|
||||
'has_one_fans' => $member['has_one_fans'] && $member['has_one_fans']['uid'] > 0,
|
||||
];
|
||||
$return_data['basic_info'] = $this->basicInfo($member);
|
||||
$return_data['fixed_diy_field'] = $this->fixedDiyField($member);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ use app\common\events\member\MemberBindMobile;
|
|||
use app\common\events\member\RegisterByMobile;
|
||||
use app\common\exceptions\MemberNotLoginException;
|
||||
use app\common\exceptions\ShopException;
|
||||
use app\common\facades\EasyWeChat;
|
||||
use app\common\facades\RichText;
|
||||
use app\common\helpers\Cache;
|
||||
use app\common\helpers\Client;
|
||||
|
|
@ -32,12 +33,14 @@ use app\common\services\aliyun\AliyunSMS;
|
|||
use app\common\services\Session;
|
||||
use app\common\services\txyunsms\SmsSingleSender;
|
||||
use app\framework\Http\Request;
|
||||
use app\frontend\modules\member\models\McMappingFansModel;
|
||||
use app\frontend\modules\member\models\MemberMiniAppModel;
|
||||
use app\frontend\modules\member\models\MemberModel;
|
||||
use app\frontend\modules\member\models\MemberUniqueModel;
|
||||
use app\frontend\modules\member\models\SubMemberModel;
|
||||
use app\frontend\modules\member\models\MemberWechatModel;
|
||||
use app\frontend\modules\member\services\factory\MemberFactory;
|
||||
use app\frontend\modules\member\services\MemberOfficeAccountService;
|
||||
use app\frontend\modules\member\services\MemberPluginSmsService;
|
||||
use app\frontend\modules\member\services\MemberService;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
|
|
@ -221,9 +224,9 @@ class RegisterController extends ApiController
|
|||
$request = request()->all();
|
||||
$register_type = $request['register_type'];
|
||||
if ($register_type==2) {
|
||||
list($data,$sub_data) = $this->registerVerify($request, 2);
|
||||
[$data,$sub_data] = $this->registerVerify($request, 2);
|
||||
} else {
|
||||
list($data,$sub_data) = $this->registerVerify($request);
|
||||
[$data,$sub_data] = $this->registerVerify($request);
|
||||
}
|
||||
\Log::debug('---新注册---',[$data,$sub_data]);
|
||||
//添加mc_members表
|
||||
|
|
@ -1083,4 +1086,101 @@ class RegisterController extends ApiController
|
|||
throw new MemberNotLoginException('请登录', $_SERVER['QUERY_STRING']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 绑定微信
|
||||
public function wechatBinding(){
|
||||
// 参数获取
|
||||
$uniacid = \YunShop::app()->uniacid;
|
||||
$uid = \YunShop::app()->getMemberId();
|
||||
$scope = \YunShop::request()->scope ?: 'userinfo'; //scope: base|home|userinfo
|
||||
$code = \YunShop::request()->code;
|
||||
|
||||
|
||||
// if (Setting::get('shop.member')['wechat_login_mode'] == '1') {
|
||||
// return (new MemberOfficeAccountService())->isPhoneLogin($uniacid);
|
||||
// }
|
||||
|
||||
// 回调地址 必须带mid
|
||||
$callback = ($_SERVER['REQUEST_SCHEME'] ? $_SERVER['REQUEST_SCHEME'] : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
||||
$wechat_scope = 'snsapi_userinfo';//$handleModel->wechatScope();
|
||||
$config = [
|
||||
'oauth' => [
|
||||
'scopes' => [$wechat_scope],
|
||||
'callback' => $callback,
|
||||
]
|
||||
];
|
||||
$app = EasyWeChat::officialAccount($config);
|
||||
$oauth = $app->oauth;
|
||||
if($code){
|
||||
try{
|
||||
$oauthUser = $oauth->user();
|
||||
$userinfo = $oauthUser->getOriginal();
|
||||
$userinfo['access_token'] = $oauthUser->getAccessToken();
|
||||
$userinfo['expires_in'] = 7200;
|
||||
$userinfo['refresh_token'] = $oauthUser->getRefreshToken();
|
||||
$user = $app->user->get($userinfo['openid']);
|
||||
$userinfo = array_merge($user, $userinfo);
|
||||
// 判断:当前微信账号是否已经绑定
|
||||
$isHas = (int)McMappingFansModel::uniacid()
|
||||
->where('uid','<>',$uid)
|
||||
->where('openid',$userinfo['openid'])
|
||||
->count();
|
||||
if($isHas > 0){
|
||||
$url = Url::absoluteApp('userinfo',['pageType'=>'UserInformation','wechat_binding_res' => 'error','wechat_binding_msg'=>'该微信号已绑定其他账号,请勿重复绑定']) . '&t=' . time();
|
||||
redirect($url)->send();
|
||||
exit;
|
||||
}
|
||||
// 修改用户 || 添加信息
|
||||
if (isset($userinfo['subscribe']) && 1 == $userinfo['subscribe']) {
|
||||
$subscribe = 1;
|
||||
$followtime = explode(',', rtrim($userinfo['subscribe_time'],','));
|
||||
$count = count($followtime);
|
||||
$follow_time = $followtime[$count-1];
|
||||
} else {
|
||||
$subscribe = 0;
|
||||
$follow_time = time();
|
||||
}
|
||||
$fansModel = McMappingFansModel::uniacid()->where('uid',$uid)->first();
|
||||
if(!$fansModel) $fansModel = new McMappingFansModel();
|
||||
$fansModel->openid = $userinfo['openid'];
|
||||
$fansModel->unionid = !empty($userinfo['unionid']) ? $userinfo['unionid'] : '';
|
||||
$fansModel->updatetime = time();
|
||||
$fansModel->follow = $subscribe;
|
||||
$fansModel->followtime = $follow_time;
|
||||
if((int)$fansModel->fanid <= 0){
|
||||
$fansModel->uid = $uid;
|
||||
$fansModel->acid = $uniacid;
|
||||
$fansModel->uniacid = $uniacid;
|
||||
$fansModel->salt = Client::random(8);
|
||||
$fansModel->nickname = stripslashes($userinfo['nickname']);
|
||||
$fansModel->unfollowtime = 0;
|
||||
$fansModel->tag = '';//小程序数据过长无法添加 base64_encode(serialize($userinfo));
|
||||
}
|
||||
$fansModel->save();
|
||||
|
||||
// 绑定信息后自动更新头像和昵称
|
||||
Member::uniacid()->where('uid', $uid)->update([
|
||||
'nickname' => stripslashes($userinfo['nickname']),
|
||||
'avatar' => $userinfo['headimgurl']
|
||||
]);
|
||||
|
||||
$url = Url::absoluteApp('userinfo',['pageType'=>'UserInformation','wechat_binding_res' => 'success']) . '&t=' . time();
|
||||
redirect($url)->send();
|
||||
}catch(\Exception $e){
|
||||
$url = Url::absoluteApp('userinfo',['pageType'=>'UserInformation','wechat_binding_res' => 'error','wechat_binding_msg'=>$e->getMessage()]) . '&t=' . time();
|
||||
redirect($url)->send();
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
return $this->successJson('',['url'=>$oauth->redirect()->getTargetUrl()]);
|
||||
}
|
||||
|
||||
|
||||
$url = Url::absoluteApp('home') . '&t=' . time();
|
||||
redirect($url)->send();
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -175,9 +175,7 @@
|
|||
<select class="form-control tpl-agent-level" name="level_id" data-agencyid="{{$item['id']}}">
|
||||
<option>请选择等级</option>
|
||||
@foreach($level as $value)
|
||||
@if($value->level_type == 0)
|
||||
<option value="{{$value->id}}" @if($item['level']==$value->id) selected @endif>{{$value->level_name}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
|
@ -189,10 +187,8 @@
|
|||
<div class="input-group level" style="display:none">
|
||||
<select class="form-control tpl-agent-level" name="level_id" data-agencyid="{{$item['id']}}" data-leve_type="cultural">
|
||||
<option>请选择等级</option>
|
||||
@foreach($level as $value)
|
||||
@if($value->level_type == 1)
|
||||
@foreach($culturalLevel as $value)
|
||||
<option value="{{$value->id}}" @if($item['cultural_level_id']==$value->id) selected @endif>{{$value->level_name}}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ namespace Yunshop\WeightValue\admin;
|
|||
use app\common\components\BaseController;
|
||||
use app\common\helpers\PaginationHelper;
|
||||
use app\common\models\Order;
|
||||
use app\common\services\ExportService;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Yunshop\NewPoster\models\Poster;
|
||||
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
|
||||
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
|
||||
use Yunshop\TeamDividend\models\Uplog;
|
||||
use Yunshop\WeightValue\models\WeightValue;
|
||||
|
|
@ -153,6 +153,53 @@ class IndexController extends BaseController{
|
|||
}
|
||||
}
|
||||
|
||||
// 用户持有信息导出
|
||||
public function exportExcel(){
|
||||
// 参数获取
|
||||
$search = request()->input('search_list');
|
||||
$search = $search ? json_decode($search,true) : [];
|
||||
// 条件生成
|
||||
$where = [];
|
||||
if($search['member_id'] > 0) $where[] = ['member_id','=',$search['member_id']];
|
||||
if($search['team_dividend_agency_level_id'] > 0) $where[] = ['team_dividend_agency_level_id','=',$search['team_dividend_agency_level_id']];
|
||||
// 列表获取
|
||||
$model = WeightValue::uniacid()
|
||||
->where($where)
|
||||
->with([
|
||||
'member' => function($query){
|
||||
$query->select(['uid','nickname','realname','avatar']);
|
||||
},
|
||||
'level' => function($query){
|
||||
$query->select(['id','level_name']);
|
||||
},
|
||||
])
|
||||
->orderBy('id','DESC');
|
||||
// 导出类
|
||||
$file_name = '权重值用户持有统计明细'.date('Y年m月d日h时i分s秒', time());
|
||||
$export_page = request()->export_page ? request()->export_page : 1;
|
||||
$export_model = new ExportService($model, $export_page);
|
||||
// 导出信息处理
|
||||
$list = $model->get()->toArray();
|
||||
// 循环处理数据
|
||||
foreach($list as &$listItem){
|
||||
[$listItem['total_quantity'],$listItem['ratio']] = WeightValue::getTotalAndRatio((int)$listItem['team_dividend_agency_level_id'],$listItem['quantity']);
|
||||
}
|
||||
$export_data[0] = ['信息ID', '会员UID', '会员昵称', '权重值类型', '平台总数', '用户持有数量', '占比(%)'];
|
||||
foreach ($list as $key => $item) {
|
||||
$export_data[$key + 1] = [
|
||||
$item['id'],
|
||||
$item['member']['uid'],
|
||||
$item['member']['nickname'] ?? '',
|
||||
$item['level'] ? $item['level']['level_name'].'权重值' : '',
|
||||
$item['total_quantity'] ?? 0,
|
||||
$item['quantity'] ?? 0,
|
||||
$item['ratio'].'%',
|
||||
];
|
||||
}
|
||||
|
||||
$export_model->export($file_name, $export_data, 'plugin.weight-value.admin.index.index', 'direct_export');
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
public function test(){
|
||||
|
|
|
|||
|
|
@ -552,7 +552,7 @@ class WeightValue extends BaseModel{
|
|||
self::$weightValueLevelTotal[$name] = $total;
|
||||
}
|
||||
// 计算比例
|
||||
$ratio = sprintf("%.2f",$quantity / $total * 100);
|
||||
$ratio = (float)sprintf("%.2f",$quantity / $total * 100);
|
||||
|
||||
return [$total,$ratio];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="clickSearch">查询</el-button>
|
||||
<el-button @click="exportExcel">导出</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
{{--表单--}}
|
||||
|
|
@ -187,7 +188,7 @@
|
|||
<template slot-scope="scope">
|
||||
<span class="label label-default">[[scope.row.total_quantity || '0.00' ]]</span>
|
||||
<span class="label label-info">[[scope.row.quantity || '0.00' ]]</span>
|
||||
<span class="label label-warning">[[scope.row.ratio ? scope.row.ratio + '%' : '0.00' ]]</span>
|
||||
<span class="label label-warning">[[scope.row.ratio + '%']]</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="created_at" label="操作">
|
||||
|
|
@ -231,9 +232,6 @@
|
|||
</el-form>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
|
@ -361,7 +359,12 @@
|
|||
}
|
||||
});
|
||||
},
|
||||
|
||||
// 权重值变更 - 导出数据
|
||||
exportExcel(){
|
||||
let _this = this;
|
||||
let searchList = this.search_list;
|
||||
window.location.href = "{!! yzWebUrl('plugin.weight-value.admin.index.exportExcel') !!}" + '&search_list=' + JSON.stringify(searchList);
|
||||
},
|
||||
|
||||
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue