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 @@ @@ -231,9 +232,6 @@ - - -