MemberService.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Merlin
  5. * Date: 2020/12/28
  6. * Time: 18:12
  7. */
  8. namespace app\common\services\member;
  9. use app\backend\modules\charts\modules\phone\models\PhoneAttribution;
  10. use app\backend\modules\charts\modules\phone\services\PhoneAttributionService;
  11. use app\common\exceptions\AppException;
  12. use app\common\helpers\Url;
  13. use app\common\models\Member as Members;
  14. use app\common\models\MemberGroup as Member_Group;
  15. use app\common\models\MemberShopInfo as MemberShop_Info;
  16. use app\frontend\modules\member\models\MemberModel;
  17. use app\frontend\modules\member\models\SubMemberModel as SubMember_Model;
  18. use Illuminate\Support\Str;
  19. use EasyWeChat\Foundation\Application;
  20. use Yunshop\AlipayOnekeyLogin\services\SynchronousUserInfo;
  21. use Yunshop\GroupWork\frontend\modules\order\models\OrderModel;
  22. use Yunshop\Kingtimes\common\models\Distributor;
  23. use Yunshop\Kingtimes\common\models\Provider;
  24. use Yunshop\RealNameAuth\common\models\RealNameAuth;
  25. use Yunshop\RealNameAuth\common\models\RealNameAuthSet;
  26. use Yunshop\RegistrationArea\Common\models\MemberLocation;
  27. use Yunshop\YunSign\common\models\Contract;
  28. use Yunshop\YunSign\common\models\ContractNum;
  29. use Yunshop\YunSign\common\models\PersonAccount;
  30. use app\backend\modules\order\models\Order;
  31. class MemberService
  32. {
  33. public static function addMember($data,$is_encrypt = false)
  34. {
  35. $uniacid = \YunShop::app()->uniacid;
  36. $mobile = $data['mobile'];
  37. $password = $data['password'];
  38. //获取图片
  39. $member_set = \Setting::get('shop.member');
  40. \Log::info('member_set', $member_set);
  41. if (isset($member_set) && $member_set['headimg']) {
  42. $avatar = yz_tomedia($member_set['headimg']);
  43. } else {
  44. $avatar = Url::shopUrl('static/images/photo-mr.jpg');
  45. }
  46. //判断是否已注册
  47. $member_info = MemberModel::getId($uniacid, $mobile);
  48. \Log::info('member_info', $member_info);
  49. if (!empty($member_info)) {
  50. throw new AppException('该手机号已被注册');
  51. }
  52. //添加mc_members表
  53. $default_groupid = Member_Group::getDefaultGroupId($uniacid)->first();
  54. \Log::info('default_groupid', $default_groupid);
  55. $data = array(
  56. 'uniacid' => $uniacid,
  57. 'mobile' => $mobile,
  58. 'groupid' => $default_groupid->id ? $default_groupid->id : 0,
  59. 'createtime' => time(),
  60. 'nickname' => $data['nickname'] ?: $mobile,
  61. 'avatar' => $avatar,
  62. 'gender' => 0,
  63. 'residecity' => '',
  64. );
  65. //随机数
  66. if (!$is_encrypt || !$data['salt']) {
  67. $data['salt'] = Str::random(8);
  68. }
  69. \Log::info('salt', $data['salt']);
  70. //加密
  71. if (!$is_encrypt || !$data['password']) {
  72. $data['password'] = md5($password . $data['salt']);
  73. }
  74. $memberModel = MemberModel::create($data);
  75. $member_id = $memberModel->uid;
  76. //手机归属地查询插入
  77. $phoneData = file_get_contents((new PhoneAttributionService())->getPhoneApi($mobile));
  78. $phoneArray = json_decode($phoneData);
  79. $phone['uid'] = $member_id;
  80. $phone['uniacid'] = $uniacid;
  81. $phone['province'] = $phoneArray->data->province;
  82. $phone['city'] = $phoneArray->data->city;
  83. $phone['sp'] = $phoneArray->data->sp;
  84. $phoneModel = new PhoneAttribution();
  85. $phoneModel->updateOrCreate(['uid' => $member_id], $phone);
  86. //默认分组表
  87. //添加yz_member表
  88. $default_sub_group_id = Member_Group::getDefaultGroupId()->first();
  89. if (!empty($default_sub_group_id)) {
  90. $default_subgroup_id = $default_sub_group_id->id;
  91. } else {
  92. $default_subgroup_id = 0;
  93. }
  94. $sub_data = array(
  95. 'member_id' => $member_id,
  96. 'uniacid' => $uniacid,
  97. 'group_id' => $default_subgroup_id,
  98. 'level_id' => 0,
  99. 'invite_code' => \app\frontend\modules\member\models\MemberModel::generateInviteCode(),
  100. );
  101. //添加用户子表
  102. SubMember_Model::insertData($sub_data);
  103. //生成分销关系链
  104. Members::createRealtion($member_id);
  105. // $cookieid = "__cookie_yun_shop_userid_{$uniacid}";
  106. // Cookie::queue($cookieid, $member_id);
  107. // Session::set('member_id', $member_id);
  108. $password = $data['password'];
  109. $member_info = MemberModel::getUserInfo($uniacid, $mobile, $password)->first();
  110. $yz_member = MemberShop_Info::getMemberShopInfo($member_id)->toArray();
  111. $data = MemberModel::userData($member_info, $yz_member);
  112. return $data;
  113. }
  114. public function getMemberOrder($integrated)
  115. {
  116. //订单显示
  117. $order_info = \app\frontend\models\Order::getOrderCountGroupByStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::REFUND]);
  118. $order['order'] = $order_info;
  119. //酒店订单
  120. if (app('plugins')->isEnabled('hotel')) {
  121. $order['hotel_order'] = \Yunshop\Hotel\common\models\Order::getHotelOrderCountGroupByStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::REFUND]);
  122. }
  123. // 拼团订单
  124. if (app('plugins')->isEnabled('fight-groups')) {
  125. $order['fight_groups_order'] = \Yunshop\FightGroups\common\models\Order::getFightGroupsOrderCountStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::COMPLETE, Order::REFUND]);
  126. }
  127. // 0.1元拼团订单
  128. if (app('plugins')->isEnabled('group-work')) {
  129. $order['group_work_order'] = OrderModel::getGroupWorkOrderCountStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::REFUND]);
  130. }
  131. //抢团订单
  132. if (app('plugins')->isEnabled('snatch-regiment')) {
  133. $order['snatch_regiment_order'] = \Yunshop\SnatchRegiment\common\models\Order::getSnatchRegimentOrderCountStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::COMPLETE, Order::REFUND]);
  134. }
  135. //上门安装订单
  136. if (app('plugins')->isEnabled('live-install')) {
  137. $order['live_install_order'] = \Yunshop\LiveInstall\models\InstallOrder::getInstallOrderCountStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::COMPLETE]);
  138. }
  139. //上门安装师傅订单
  140. if (app('plugins')->isEnabled('live-install') && \Yunshop\LiveInstall\services\SettingService::checkIsWorker()) {
  141. $order['live_install_work_order'] = \Yunshop\LiveInstall\models\InstallOrder::getInstallOrderWorkCountStatus([2, 3, 4, 6]);
  142. }
  143. //cps订单
  144. if (app('plugins')->isEnabled('aggregation-cps')) {
  145. $order['aggregation_cps_order'] = \Yunshop\AggregationCps\api\models\BingBirdOrderModel::countOrderByStatus();
  146. }
  147. if (\app\common\services\plugin\leasetoy\LeaseToySet::whetherEnabled()) {
  148. $order['lease_order'] = \Yunshop\LeaseToy\models\Order::getLeaseOrderCountGroupByStatus([Order::WAIT_PAY, Order::WAIT_SEND, Order::WAIT_RECEIVE, Order::COMPLETE]);
  149. }
  150. foreach ($order as $key => $item) {
  151. $order[$key] = array_values(collect($item)->sortBy('status')->all());
  152. }
  153. // //宠物医院插件会员中心模板化显示 todo;前端说没用了,我就注释掉了
  154. // $order['current']= MemberCenter::current()->all();
  155. if (is_null($integrated)) {
  156. return $this->successJson('获取会员订单成功!', $order);
  157. } else {
  158. return show_json(1, $order);
  159. }
  160. }
  161. public function getMemberOrderName($integrated)
  162. {
  163. //订单名字
  164. $order['order'] = '商城订单';
  165. //酒店订单
  166. if (app('plugins')->isEnabled('hotel')) {
  167. $order['hotel_order'] = '酒店订单';
  168. }
  169. // 拼团订单
  170. if (app('plugins')->isEnabled('fight-groups')) {
  171. $order['fight_groups_order'] = '拼团订单';
  172. }
  173. // 0.1元拼团订单
  174. if (app('plugins')->isEnabled('group-work')) {
  175. $setGroupWrok = \Setting::get('plugin.group_work');
  176. $order['group_work_order'] = $setGroupWrok['plugin_name'] ? $setGroupWrok['plugin_name'] : '0.1元拼订单';
  177. }
  178. //抢团订单
  179. if (app('plugins')->isEnabled('snatch-regiment')) {
  180. $order['snatch_regiment_order'] = '抢团订单';
  181. }
  182. //上门安装订单
  183. if (app('plugins')->isEnabled('live-install')) {
  184. $another_name = \Yunshop\LiveInstall\services\SettingService::getAnotherName();
  185. $order['live_install_order'] = $another_name['plugin_name'] . '订单';
  186. //上门安装师傅订单
  187. if (\Yunshop\LiveInstall\services\SettingService::checkIsWorker()) {
  188. $order['live_install_work_order'] = $another_name['worker_name'] . '订单';
  189. }
  190. }
  191. if (app('plugins')->isEnabled('aggregation-cps')) {
  192. $order['aggregation_cps_order'] = 'CPS订单';
  193. }
  194. if (\app\common\services\plugin\leasetoy\LeaseToySet::whetherEnabled()) {
  195. $order['lease_order'] = '租赁订单';
  196. }
  197. if (is_null($integrated)) {
  198. return $this->successJson('获取会员订单成功!', $order);
  199. } else {
  200. return show_json(1, $order);
  201. }
  202. }
  203. }