TestController.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 18/04/2017
  6. * Time: 15:12
  7. */
  8. namespace app\backend\controllers;
  9. use app\backend\modules\charts\modules\member\services\LowerCountService;
  10. use app\backend\modules\charts\modules\member\services\LowerOrderService;
  11. use app\backend\modules\member\models\Member;
  12. use app\backend\modules\order\models\OrderOperationLog;
  13. use app\backend\modules\uploadVerificate\UploadVerificationBaseController;
  14. use app\backend\modules\uploadVerificate\UploadVerificationController;
  15. use app\common\components\BaseController;
  16. use app\common\events\order\AfterOrderCreatedEvent;
  17. use app\common\facades\EasyWeChat;
  18. use app\common\facades\Setting;
  19. use app\common\helpers\Url;
  20. use app\common\models\Goods;
  21. use app\common\models\Income;
  22. use app\common\models\member\ChildrenOfMember;
  23. use app\common\models\member\MemberParent;
  24. use app\common\models\member\ParentOfMember;
  25. use app\common\models\Order;
  26. use app\common\models\OrderGoods;
  27. use app\common\modules\shop\ShopConfig;
  28. use app\common\services\PayFactory;
  29. use app\common\services\Session;
  30. use app\common\services\systemUpgrade;
  31. use app\common\services\wechatApiV3\ApiV3Config;
  32. use app\framework\Http\Request;
  33. use app\framework\Redis\RedisServiceProvider;
  34. use app\common\services\member\MemberRelation;
  35. use app\common\services\MessageService;
  36. use app\frontend\modules\member\models\SubMemberModel;
  37. use app\Jobs\addReturnIncomeJob;
  38. use app\Jobs\MemberLowerCountJob;
  39. use app\Jobs\MemberLowerGroupOrderJob;
  40. use app\Jobs\MemberLowerOrderJob;
  41. use business\common\models\Staff;
  42. use business\common\services\QyWechatRequestService;
  43. use business\common\services\SettingService;
  44. use Carbon\Carbon;
  45. use EasyWeChat\Factory;
  46. use EasyWeChat\Kernel\Messages\TextCard;
  47. use Illuminate\Filesystem\Filesystem;
  48. use Illuminate\Support\Arr;
  49. use Illuminate\Support\Collection;
  50. use Illuminate\Support\Facades\DB;
  51. use Illuminate\Support\Facades\Redis;
  52. use Yunshop\BrowseFootprint\models\BrowseFootprintModel;
  53. use Yunshop\CityDelivery\models\AnotherOrder;
  54. use Yunshop\CityDelivery\models\DeliveryOrder;
  55. use Yunshop\CityDelivery\services\SfService;
  56. use Yunshop\ClockIn\api\ClockInPayController;
  57. use Yunshop\Commission\models\AgentLevel;
  58. use Yunshop\Commission\models\Agents;
  59. use Yunshop\Commission\models\CommissionOrder;
  60. use Yunshop\CustomerIncrease\models\Activity;
  61. use Yunshop\CustomerIncrease\models\ActivityCode;
  62. use Yunshop\CustomerIncrease\models\ActivityPoster;
  63. use Yunshop\CustomerIncrease\services\IntroduceService;
  64. use Yunshop\CustomerIncrease\services\PosterService;
  65. use Yunshop\CustomerRadar\models\CustomerRadarSet;
  66. use Yunshop\GroupDevelopUser\common\models\GroupChat;
  67. use Yunshop\GroupDevelopUser\common\models\GroupCode;
  68. use Yunshop\GroupDevelopUser\common\services\CodeService;
  69. use Yunshop\GroupDevelopUser\common\services\GroupChatService;
  70. use Yunshop\GroupReward\common\services\GroupChatRewardService;
  71. use Yunshop\MemberTags\Common\models\MemberTagsRelationModel;
  72. use Yunshop\ProjectManager\events\SaveNoticeEvent;
  73. use Yunshop\StoreCashier\common\models\StoreSetting;
  74. use Yunshop\TeamDividend\admin\models\MemberChild;
  75. use Yunshop\UploadVerification\service\UploadVerificateRoute;
  76. use app\backend\modules\member\models\MemberShopInfo;
  77. use app\common\events\member\BecomeAgent;
  78. use app\common\events\order\AfterOrderPaidEvent;
  79. use app\common\models\order\OrderDeduction;
  80. use Yunshop\StoreBusinessAlliance\models\StoreBusinessAlliancePriceDifferenceAwardModel;
  81. use Yunshop\StoreBusinessAlliance\models\StoreBusinessAllianceRecommendAwardModel;
  82. use app\common\events\order\AfterOrderReceivedEvent;
  83. use Exception;
  84. use Yunshop\WechatCustomers\common\models\Customer;
  85. use Yunshop\YunChat\common\models\Chats;
  86. use Yunshop\YunChat\common\service\ChatService;
  87. use Yunshop\YunChat\common\utils\WechatKf;
  88. use Yunshop\YunChat\manage\GroupController;
  89. class TestController extends UploadVerificationBaseController
  90. {
  91. use \Illuminate\Foundation\Bus\DispatchesJobs;
  92. protected $isPublic = true;
  93. public function t()
  94. {
  95. return;
  96. }
  97. public function getParams($url)
  98. {
  99. $result = array();
  100. $mr = preg_match('/groupId=([0-9]+)/', $url, $matchs);
  101. dd($url,$mr,$matchs);
  102. }
  103. //生成请求链接
  104. public function getRequestUrl($base_url, //设置页面的基础链接
  105. $app_id, //设置页面的app_id
  106. $app_secret, //设置页面的app_secret
  107. $user_mobile, //会员的手机号
  108. $point = 0, //要增加的积分点数,如果设置页面没有开启积分增加开关则无效
  109. $notify_url = 'https://www.baidu.com' //要增加的积分点数,如果设置页面没有开启积分增加开关则无效
  110. )
  111. {
  112. }
  113. public function a()
  114. {
  115. (new \app\backend\modules\charts\modules\member\services\TimedTaskService())->handle();
  116. }
  117. private $amountItems;
  118. private function getAmountItems()
  119. {
  120. if (!isset($this->amountItems)) {
  121. $this->amountItems = \app\common\models\Withdraw::select(['member_id', DB::raw('sum(`actual_amounts`) as total_amount')])->
  122. where('type', 'Yunshop\Commission\models\CommissionOrder')
  123. ->where('status', 2)->groupBy('member_id')
  124. ->get();
  125. }
  126. return $this->amountItems;
  127. }
  128. private function getAmountByMemberId($memberId)
  129. {
  130. $amountItem = $this->getAmountItems()->where('member_id', $memberId)->first();
  131. if ($amountItem) {
  132. return $amountItem['total_amount'];
  133. }
  134. return 0;
  135. }
  136. public $orderId;
  137. /**
  138. * @return bool
  139. */
  140. public function index()
  141. {
  142. $a = Carbon::createFromTimestamp(1503488629)->diffInDays(Carbon::createFromTimestamp(1504069595), true);
  143. $member_relation = new MemberRelation();
  144. $relation = $member_relation->hasRelationOfParent(66, 5, 1);
  145. dd($relation);
  146. $text = '{"commission":{"title":"u5206u9500","data":{"0":{"title":"u5206u9500u4f63u91d1","value":"0.01u5143"},"2":{"title":"u4f63u91d1u6bd4u4f8b","value":"0.15%"},"3":{"title":"u7ed3u7b97u5929u6570","value":"0u5929"},"4":{"title":"u4f63u91d1u65b9u5f0f","value":"+u5546u54c1u72ecu7acbu4f63u91d1"},"5":{"title":"u5206u4f63u65f6u95f4","value":"2018-10-24 09:15:31"},"6":{"title":"u7ed3u7b97u65f6u95f4","value":"2018-10-24 09:20:04"}}},"order":{"title":"u8ba2u5355","data":[{"title":"u8ba2u5355u53f7","value":"SN201810 24091508a8"},{"title":"u72b6u6001","value":"u4ea4u6613u5b8cu6210"}]},"goods":{"title":"u5546u54c1","data":[[{"title":"u540du79f0","value":"u8700u9999u98ceu7fd4u8c46u82b1u6ce1u998du5e97"},{"title":"u91d1u989d","value":"4.00u5143"}]]}}';
  147. $pattern1 = '/\\\u[\d|\w]{4}/';
  148. preg_match($pattern1, $text, $exists);
  149. if (empty($exists)) {
  150. $pattern2 = '/(u[\d|\w]{4})/';
  151. }
  152. }
  153. public function op_database()
  154. {
  155. $sub_data = array(
  156. 'member_id' => 999,
  157. 'uniacid' => 5,
  158. 'group_id' => 0,
  159. 'level_id' => 0,
  160. );
  161. SubMemberModel::insertData($sub_data);
  162. if (SubMemberModel::insertData($sub_data)) {
  163. echo 'ok';
  164. } else {
  165. echo 'ko';
  166. }
  167. }
  168. public function notice()
  169. {
  170. $teamDividendNotice = \Setting::get('plugin.team_dividend');
  171. $member = Member::getMemberById(\YunShop::app()->getMemberId());
  172. if ($teamDividendNotice['template_id']) {
  173. $message = $teamDividendNotice['team_agent'];
  174. $message = str_replace('[昵称]', $member->nickname, $message);
  175. $message = str_replace('[时间]', date('Y-m-d H:i:s', time()), $message);
  176. $message = str_replace('[团队等级]', '一级', $message);
  177. $msg = [
  178. "first" => '您好',
  179. "keyword1" => "成为团队代理通知",
  180. "keyword2" => $message,
  181. "remark" => "",
  182. ];
  183. echo '<pre>';
  184. print_r($msg);
  185. MessageService::notice($teamDividendNotice['template_id'], $msg, 'oNnNJwqQwIWjAoYiYfdnfiPuFV9Y');
  186. }
  187. return;
  188. }
  189. public function fixImage()
  190. {
  191. $goods = DB::table('yz_goods')->get();
  192. $goods_success = 0;
  193. $goods_error = 0;
  194. foreach ($goods as $item) {
  195. if ($item['thumb'] && !preg_match('/^images/', $item['thumb'])) {
  196. $src = $item['thumb'];
  197. if (strexists($src, '/addons/') || strexists($src, 'yun_shop/') || strexists($src, '/static/')) {
  198. continue;
  199. }
  200. if (preg_match('/\/images/', $item['thumb'])) {
  201. $thumb = substr($item['thumb'], strpos($item['thumb'], 'images'));
  202. $bool = DB::table('yz_goods')->where('id', $item['id'])->update(['thumb' => $thumb]);
  203. if ($bool) {
  204. $goods_success++;
  205. } else {
  206. $goods_error++;
  207. }
  208. }
  209. }
  210. }
  211. $category = DB::table('yz_category')->get();
  212. $category_success = 0;
  213. $category_error = 0;
  214. foreach ($category as $item) {
  215. $src = $item['thumb'];
  216. if (strexists($src, 'addons/') || strexists($src, 'yun_shop/') || strexists($src, 'static/')) {
  217. continue;
  218. }
  219. if ($item['thumb'] && !preg_match('/^images/', $item['thumb'])) {
  220. if (preg_match('/\/images/', $item['thumb'])) {
  221. $thumb = substr($item['thumb'], strpos($item['thumb'], 'images'));
  222. $bool = DB::table('yz_category')->where('id', $item['id'])->update(['thumb' => $thumb]);
  223. if ($bool) {
  224. $category_success++;
  225. } else {
  226. $category_error++;
  227. }
  228. }
  229. }
  230. }
  231. echo '商品图片修复成功:' . $goods_success . '个,失败:' . $goods_error . '个';
  232. echo '<br />';
  233. echo '分类图片修复成功:' . $category_success . '个,失败:' . $category_error . '个';
  234. }
  235. public function tt()
  236. {
  237. $member_relation = new MemberRelation();
  238. $member_relation->createParentOfMember();
  239. }
  240. public function fixIncome()
  241. {
  242. $count = 0;
  243. $income = Income::whereBetween('created_at', [1539792000, 1540915200])->get();
  244. foreach ($income as $value) {
  245. $pattern1 = '/\\\u[\d|\w]{4}/';
  246. preg_match($pattern1, $value->detail, $exists);
  247. if (empty($exists)) {
  248. $pattern2 = '/(u[\d|\w]{4})/';
  249. $value->detail = preg_replace($pattern2, '\\\$1', $value->detail);
  250. $value->save();
  251. $count++;
  252. }
  253. }
  254. echo "修复了{$count}条";
  255. }
  256. public function pp()
  257. {
  258. $member_info = Member::getAllMembersInfosByQueue(\YunShop::app()->uniacid);
  259. $total = $member_info->distinct()->count();
  260. dd($total);
  261. $this->chkSynRun(10);
  262. exit;
  263. /*$member_relation = new MemberRelation();
  264. $member_relation->createChildOfMember();*/
  265. }
  266. public function synRun($uniacid)
  267. {
  268. $parentMemberModle = new ParentOfMember();
  269. $childMemberModel = new ChildrenOfMember();
  270. $memberModel = new Member();
  271. $memberModel->_allNodes = collect([]);
  272. \Log::debug('--------------清空表数据------------');
  273. //$parentMemberModle->DeletedData();
  274. $memberInfo = $memberModel->getTreeAllNodes($uniacid);
  275. dd($memberInfo);
  276. if ($memberInfo->isEmpty()) {
  277. \Log::debug('----is empty-----');
  278. return;
  279. }
  280. foreach ($memberInfo as $item) {
  281. $memberModel->_allNodes->put($item->member_id, $item);
  282. }
  283. \Log::debug('--------queue synRun -----');
  284. dd(1);
  285. foreach ($memberInfo as $key => $val) {
  286. $attr = [];
  287. $child_attr = [];
  288. echo $val->member_id . '<BR>';
  289. \Log::debug('--------foreach start------', $val->member_id);
  290. $data = $memberModel->chktNodeParents($uniacid, $val->member_id);
  291. \Log::debug('--------foreach data------', $data->count());
  292. if (!$data->isEmpty()) {
  293. \Log::debug('--------insert init------');
  294. foreach ($data as $k => $v) {
  295. $attr[] = [
  296. 'uniacid' => $uniacid,
  297. 'parent_id' => $k,
  298. 'level' => $v['depth'] + 1,
  299. 'member_id' => $val->member_id,
  300. 'created_at' => time()
  301. ];
  302. $child_attr[] = [
  303. 'uniacid' => $uniacid,
  304. 'parent_id' => $val->member_id,
  305. 'level' => $v['depth'] + 1,
  306. 'member_id' => $k,
  307. 'created_at' => time()
  308. ];
  309. }
  310. $childMemberModel->createData($attr);
  311. /*
  312. foreach ($data as $k => $v) {
  313. $attr[] = [
  314. 'uniacid' => $uniacid,
  315. 'parent_id' => $k,
  316. 'level' => $v['depth'] + 1,
  317. 'member_id' => $val->member_id,
  318. 'created_at' => time()
  319. ];
  320. }
  321. $parentMemberModle->createData($attr);*/
  322. }
  323. }
  324. }
  325. public function synRun2($uniacid)
  326. {
  327. $childMemberModel = new ChildrenOfMember();
  328. $memberModel = new Member();
  329. $memberModel->_allNodes = collect([]);
  330. \Log::debug('--------------清空表数据------------');
  331. $childMemberModel->DeletedData();
  332. $memberInfo = $memberModel->getTreeAllNodes($uniacid);
  333. if ($memberInfo->isEmpty()) {
  334. \Log::debug('----is empty-----');
  335. return;
  336. }
  337. foreach ($memberInfo as $item) {
  338. $memberModel->_allNodes->put($item->member_id, $item);
  339. }
  340. \Log::debug('--------queue synRun -----');
  341. foreach ($memberInfo as $key => $val) {
  342. $attr = [];
  343. $memberModel->filter = [];
  344. echo '<pre>';
  345. print_r($val->member_id);
  346. \Log::debug('--------foreach start------', $val->member_id);
  347. $data = $memberModel->getDescendants($uniacid, $val->member_id);
  348. \Log::debug('--------foreach data------', $data->count());
  349. if (!$data->isEmpty()) {
  350. \Log::debug('--------insert init------');
  351. $data = $data->toArray();
  352. foreach ($data as $k => $v) {
  353. if ($k != $val->member_id) {
  354. $attr[] = [
  355. 'uniacid' => $uniacid,
  356. 'child_id' => $k,
  357. 'level' => $v['depth'] + 1,
  358. 'member_id' => $val->member_id,
  359. 'created_at' => time()
  360. ];
  361. } else {
  362. $e = [$k, $v];
  363. }
  364. }
  365. echo '<pre>';
  366. print_r($attr);
  367. // $childMemberModel->createData($attr);
  368. }
  369. }
  370. }
  371. public function cmr()
  372. {
  373. $member_relation = new MemberRelation();
  374. $a = [
  375. [65, 79],
  376. [75, 79],
  377. [37, 65],
  378. [66, 65],
  379. [84, 75],
  380. [13, 37],
  381. [13090, 66],
  382. [24122, 66],
  383. [24132, 66],
  384. [91, 84],
  385. [9231, 84],
  386. [9571, 84],
  387. [89, 65]
  388. ];
  389. $aa = [
  390. [66, 0]
  391. ];
  392. foreach ($a as $item) {
  393. $member_relation->build($item[0], $item[1]);
  394. }
  395. echo 'ok';
  396. }
  397. public function chkSynRun()
  398. {
  399. //$uniacid = \YunShop::app()->uniacid;
  400. (new Member())->chkRelationData();
  401. /*$memberModel->_allNodes = collect([]);
  402. $memberInfo = $memberModel->getTreeAllNodes($uniacid);
  403. if ($memberInfo->isEmpty()) {
  404. \Log::debug('----is empty-----');
  405. return;
  406. }
  407. foreach ($memberInfo as $item) {
  408. $memberModel->_allNodes->put($item->member_id, $item);
  409. }
  410. \Log::debug('--------queue synRun -----');
  411. foreach ($memberInfo as $key => $val) {
  412. \Log::debug('--------foreach start------', $val->member_id);
  413. $memberModel->chkNodeParents($uniacid, $val->member_id);
  414. }
  415. echo 'end';*/
  416. }
  417. public function generateAddressJs()
  418. {
  419. $num = (new \app\common\services\address\GenerateAddressJs())->address();
  420. echo $num;
  421. }
  422. protected $GoodsGroupTable = 'yz_goods_group_goods';
  423. protected $DesignerTable = 'yz_designer';
  424. public function test()
  425. {
  426. }
  427. public function fixImg()
  428. {
  429. $time = [mktime(23, 59, 59, date('m'), date('d') - date('w') - 7, date('Y')), time()];
  430. // $time = [mktime(0,0,0,date('m'),1,date('Y')),time()];
  431. $order = Order::uniacid()->with(['hasManyOrderGoods.goods'])->whereBetween('create_time', $time)->get();
  432. foreach ($order as $item) {
  433. foreach ($item['hasManyOrderGoods'] as $it) {
  434. if (empty($it['thumb'])) {
  435. $order_goods = OrderGoods::find($it['id']);
  436. $data['thumb'] = yz_tomedia($it['goods']['thumb']);
  437. $order_goods->fill($data);
  438. $validator = $order_goods->validator();
  439. if ($validator->fails()) {
  440. throw new AppException($validator->messages()->first());
  441. }
  442. if (!$order_goods->save()) {
  443. \Log::debug('修复图片失败,订单id:' . $item['id']);
  444. throw new AppException('修复图片失败,订单id:' . $item['id']);
  445. }
  446. }
  447. }
  448. }
  449. dd('修复成功');
  450. }
  451. public function suser()
  452. {
  453. $u = request()->input('u');
  454. $blank = request()->input('blank');
  455. if ($blank) {
  456. Session::set('member_id', $u);
  457. }
  458. $a = Session::get('member_id');
  459. dd($a);
  460. }
  461. }