diff --git a/app/backend/modules/order/controllers/ImitateCreateOrderController.php b/app/backend/modules/order/controllers/ImitateCreateOrderController.php
new file mode 100644
index 00000000..700c1886
--- /dev/null
+++ b/app/backend/modules/order/controllers/ImitateCreateOrderController.php
@@ -0,0 +1,136 @@
+getList();
+ // 循环处理
+ foreach($list as $key => $createOrderInfo){
+ try{
+ echo "
";
+ echo "开始处理第 {$key} 条数据:
UID-{$createOrderInfo['uid']} 购买的{$createOrderInfo['total']}个 {$createOrderInfo['goods_name']}";
+ // 模拟下单
+ $this->imitateCreateOrderOperate($createOrderInfo);
+
+
+
+ echo "
处理完成 - SUCCESS";
+ }catch(\Exception $e){
+ echo "
处理完成 - 处理失败:".$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;
+ }
+
+
+
+
+
+
+
+}
diff --git a/app/frontend/modules/member/controllers/MemberInfoController.php b/app/frontend/modules/member/controllers/MemberInfoController.php
index 37864fe0..d1044007 100644
--- a/app/frontend/modules/member/controllers/MemberInfoController.php
+++ b/app/frontend/modules/member/controllers/MemberInfoController.php
@@ -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);
diff --git a/app/frontend/modules/member/controllers/RegisterController.php b/app/frontend/modules/member/controllers/RegisterController.php
index 10b69ff1..3ac64ed5 100644
--- a/app/frontend/modules/member/controllers/RegisterController.php
+++ b/app/frontend/modules/member/controllers/RegisterController.php
@@ -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;
+ }
+
+
}
diff --git a/plugins/team-dividend/views/admin/team-agency.blade.php b/plugins/team-dividend/views/admin/team-agency.blade.php
index 98df6145..7194cdcf 100644
--- a/plugins/team-dividend/views/admin/team-agency.blade.php
+++ b/plugins/team-dividend/views/admin/team-agency.blade.php
@@ -175,9 +175,7 @@
@@ -189,10 +187,8 @@
diff --git a/plugins/weight-value/src/admin/IndexController.php b/plugins/weight-value/src/admin/IndexController.php
index c342552c..145f91cf 100644
--- a/plugins/weight-value/src/admin/IndexController.php
+++ b/plugins/weight-value/src/admin/IndexController.php
@@ -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(){
diff --git a/plugins/weight-value/src/models/WeightValue.php b/plugins/weight-value/src/models/WeightValue.php
index 55a68a5d..154dba3e 100644
--- a/plugins/weight-value/src/models/WeightValue.php
+++ b/plugins/weight-value/src/models/WeightValue.php
@@ -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];
}
diff --git a/plugins/weight-value/views/index/index.blade.php b/plugins/weight-value/views/index/index.blade.php
index 04782a42..eecb7cb6 100644
--- a/plugins/weight-value/views/index/index.blade.php
+++ b/plugins/weight-value/views/index/index.blade.php
@@ -153,6 +153,7 @@
查询
+ 导出
{{--表单--}}
@@ -187,7 +188,7 @@
[[scope.row.total_quantity || '0.00' ]]
[[scope.row.quantity || '0.00' ]]
- [[scope.row.ratio ? scope.row.ratio + '%' : '0.00' ]]
+ [[scope.row.ratio + '%']]
@@ -231,9 +232,6 @@
-
-
-