command.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: stanley-king
  5. * Date: 2017/9/28
  6. * Time: 上午10:16
  7. */
  8. defined('InShopNC') or exit('Access Invalid!');
  9. require_once(BASE_ROOT_PATH . '/helper/notify_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/stat_helper.php');
  11. require_once(BASE_DATA_PATH . '/mobile/omsid.php');
  12. require_once(BASE_ROOT_PATH . '/helper/bonus_helper.php');
  13. require_once(BASE_ROOT_PATH . '/helper/bonus/witholder.php');
  14. require_once(BASE_ROOT_PATH . '/helper/bonus/norate_holder.php');
  15. require_once(BASE_ROOT_PATH . '/helper/notify_helper.php');
  16. require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
  17. require_once(BASE_ROOT_PATH . '/data/mobile/lrlz_staff.php');
  18. require_once(BASE_ROOT_PATH . '/helper/search/tcp_client.php');
  19. require_once(BASE_ROOT_PATH . '/helper/room/factory_client.php');
  20. class commandControl extends BaseCronControl
  21. {
  22. const admin_member_id = 36429;
  23. public function __construct()
  24. {
  25. parent::__construct();
  26. }
  27. //中秋节给员工发红包
  28. public function zqbonusOp()
  29. {
  30. $staffs = lrlz_staff();
  31. $type_sn = '76341506502791044726';
  32. bonus_helper::send_mobile($type_sn,$staffs,2);
  33. }
  34. public function init_commentsOp()
  35. {
  36. $mod = Model('goods');
  37. $i = 0;
  38. while (true)
  39. {
  40. $start = $i * 1000;
  41. $items = Model()->table('evaluate_goods')->field('geval_commonid,geval_goodsid')->order('geval_id asc')->limit("{$start},1000")->select();
  42. if(empty($items)) {
  43. return;
  44. }
  45. $i++;
  46. foreach ($items as $item)
  47. {
  48. $cid = intval($item['geval_commonid']);
  49. if($cid <= 0) continue;
  50. $mod->editGoodsCommon(['comments' => array('exp', "comments+1")],['goods_commonid' => $cid]);
  51. }
  52. }
  53. }
  54. public function init_rewardOp()
  55. {
  56. $mod_member = Model('member');
  57. $i = 0;
  58. while (true)
  59. {
  60. $start = $i * 1000;
  61. $items = $mod_member->field('member_id')->order('member_id asc')->limit("{$start},1000")->select();
  62. if(empty($items)) {
  63. return;
  64. }
  65. $i++;
  66. foreach ($items as $item)
  67. {
  68. $user = intval($item['member_id']);
  69. if($user <= 0) continue;
  70. $val = $mod_member->field('count(*) inviter_count' )->where(['inviter_id' => $user])->select();
  71. $invitees = intval($val[0]['inviter_count']);
  72. if($invitees <= 0) continue;
  73. $ret = $mod_member->editMember(['member_id' => $user],['invitees' => $invitees,'reward_amount' => $invitees * 30]);
  74. if($ret == false) {
  75. Log::record("update member_id = {$user} invitees and reward",Log::ERR);
  76. }
  77. }
  78. }
  79. }
  80. public function pass_followOp()
  81. {
  82. $mod_member = Model('member');
  83. $i = 0;
  84. while (true)
  85. {
  86. $start = $i * 1000;
  87. $items = $mod_member->field('member_id')->order('member_id asc')->limit("{$start},1000")->select();
  88. if(empty($items)) {
  89. return;
  90. }
  91. $i++;
  92. foreach ($items as $item)
  93. {
  94. $user = intval($item['member_id']);
  95. if($user <= 0) continue;
  96. relation_helper::onLogin($user);
  97. }
  98. }
  99. }
  100. public function order_pushOp()
  101. {
  102. QueueClient::push('onAsyncBroadcastOrder',['pay_sn' => '330564181105825442','amount' => 1,'days' => 30]);
  103. }
  104. public function init_userOp()
  105. {
  106. $mod_stat = Model('stat_daily');
  107. $items = $mod_stat->field('date_id')->limit(false)->select();
  108. foreach ($items as $item)
  109. {
  110. $time = intval($item['date_id']);
  111. $stat = new statistics\stmember($time);
  112. $stat->init_user();
  113. }
  114. }
  115. private function find_user($mobile)
  116. {
  117. if(empty($mobile)) return false;
  118. $mod_member = Model('member');
  119. $infos = $mod_member->where(['member_mobile' => $mobile])->select();
  120. if(empty($infos)) return false;
  121. return intval($infos[0]['member_id']);
  122. }
  123. public function reset_bonusOp()
  124. {
  125. $mod_bonus = Model('user_bonus');
  126. $i = 0;
  127. while (true)
  128. {
  129. $start = $i * 1000;
  130. $items = $mod_bonus->field('*')->order('bonus_id asc')->limit("{$start},1000")->select();
  131. if(empty($items)) {
  132. return;
  133. }
  134. $i++;
  135. foreach ($items as $item)
  136. {
  137. try
  138. {
  139. $bonus = bonus\user_bonus::create_by_param($item);
  140. $remain_amount = $bonus->bonus_value() - $bonus->send_amount() - $bonus->pay_amount();
  141. $ret = $mod_bonus->where(['bonus_id' => $bonus->bonus_id()])->update(['remain_amount' => $remain_amount]);
  142. Log::record("updata bonus_id = {$bonus->bonus_id()} ret={$ret}",Log::DEBUG);
  143. }
  144. catch (Exception $ex)
  145. {
  146. }
  147. }
  148. }
  149. }
  150. public function init_employeeOp()
  151. {
  152. $mod_member = Model('member');
  153. $mod_employee = Model();
  154. $i = 0;
  155. while (true)
  156. {
  157. $start = $i * 1000;
  158. $items = $mod_employee->table('employee')->field('*')->order('mobile asc')->limit("{$start},1000")->select();
  159. if(empty($items)) {
  160. return;
  161. }
  162. $i++;
  163. foreach ($items as $item)
  164. {
  165. try
  166. {
  167. $mobile = $item['mobile'];
  168. $name = $item['employee_name'];
  169. $workno = $item['workno'];
  170. $info = $mod_member->getMemberInfo(['member_mobile' => $mobile]);
  171. $minfo = new member_info($info);
  172. $member_id = $minfo->member_id();
  173. $mod_employee->table('employee')->where(['mobile' => $mobile])->update(['member_id' => $member_id]);
  174. }
  175. catch (Exception $ex)
  176. {
  177. Log::record("{$name} {$workno} {$mobile} not registed",Log::ERR);
  178. }
  179. }
  180. }
  181. }
  182. public function shake_roomOp()
  183. {
  184. $ret = room\factory_client::instance()->create_shake(self::admin_member_id);
  185. }
  186. public function init_member_bindOp()
  187. {
  188. $mod_member = Model('member');
  189. $i = 0;
  190. while (true)
  191. {
  192. $start = $i * 1000;
  193. $items = $mod_member->field('*')->order('member_id asc')->limit("{$start},1000")->select();
  194. if(empty($items)) {
  195. return;
  196. }
  197. $i++;
  198. foreach ($items as $item)
  199. {
  200. $mobile = $item['member_mobile'];
  201. $member_id = intval($item['member_id']);
  202. if(empty($mobile)) {
  203. $mobile_bind = 0;
  204. } else {
  205. $mobile_bind = 1;
  206. }
  207. $openid = $item['member_wxopenid'];
  208. $unionid = $item['member_wxunionid'];
  209. if(empty($openid) && empty($unionid)) {
  210. $wxunion_bind = 0;
  211. } else {
  212. $wxunion_bind = 1;
  213. }
  214. $ret = $mod_member->editMember(['member_id' => $member_id],['member_mobile_bind' => $mobile_bind,'member_wechat_bind' => $wxunion_bind]);
  215. if($ret && $mod_member->affected_rows() >= 0) {
  216. Log::record("user: {$member_id} edit ok",Log::DEBUG);
  217. } else {
  218. Log::record("user: {$member_id} edit fail",Log::ERR);
  219. }
  220. }
  221. }
  222. }
  223. public function init_rewared_inviterOp()
  224. {
  225. $mod_member = Model('member');
  226. $i = 0;
  227. while (true)
  228. {
  229. $start = $i * 1000;
  230. $items = $mod_member->field('*')->order('member_id asc')->limit("{$start},1000")->select();
  231. if(empty($items)) {
  232. return;
  233. }
  234. $i++;
  235. foreach ($items as $item)
  236. {
  237. $member_id = intval($item['member_id']);
  238. $ret = $mod_member->editMember(['member_id' => $member_id],['rewared_inviter' => 1]);
  239. if($ret && $mod_member->affected_rows() >= 0) {
  240. Log::record("user: {$member_id} edit ok",Log::DEBUG);
  241. } else {
  242. Log::record("user: {$member_id} edit fail",Log::ERR);
  243. }
  244. }
  245. }
  246. }
  247. public function init_shakeOp()
  248. {
  249. $ret = room\factory_client::instance()->create_shake(self::admin_member_id);
  250. }
  251. //修改商品价格,市场价,价格,底价
  252. public function init_lowest_priceOp()
  253. {
  254. Log::record(__METHOD__ . " start",Log::DEBUG);
  255. $mod_goods = Model('goods');
  256. $path = BASE_DATA_PATH . '/mobile/lowest_price.txt';
  257. $file = fopen($path,'r');
  258. $i = 0;
  259. while (!feof($file))
  260. {
  261. $line = fgets($file);
  262. $line = trim($line);
  263. $datas = explode("\t",$line);
  264. if(count($datas) == 3) {
  265. $goods_id = intval($datas[0]);
  266. $goods_price = intval($datas[1] * 100 + 0.5) / 100;
  267. $lowest_price = intval($datas[2] * 100 + 0.5) / 100;
  268. $result = $mod_goods->editGoods(['goods_marketprice' => $goods_price,'goods_price' => $goods_price,'goods_lowest_price' => $lowest_price],['goods_id' => $goods_id]);
  269. if($result == false) {
  270. Log::record("update goods_id = {$goods_id}",Log::ERR);
  271. }
  272. }
  273. else {
  274. Log::record("update err line ={$i}",Log::ERR);
  275. }
  276. $i++;
  277. }
  278. fclose($file);
  279. Log::record(__METHOD__ . " end",Log::DEBUG);
  280. }
  281. //去掉order bonus_rate
  282. public function remove_order_bonusrateOp()
  283. {
  284. $mod_order = Model('order');
  285. $i = 0;
  286. while (true)
  287. {
  288. $start = $i * 1000;
  289. $items = $mod_order->table('order')->field('*')->order('order_id asc')->limit("{$start},1000")->select();
  290. if(empty($items)) {
  291. return;
  292. }
  293. $i++;
  294. foreach ($items as $item)
  295. {
  296. $order_id = intval($item['order_id']);
  297. $pd_amount = intval($item['pd_amount'] * 100 + 0.5);
  298. $bonus_rate = unserialize($item['bonus_rate']);
  299. $bonus_amount = unserialize($item['bonus_amount']);
  300. if($bonus_amount != false) continue;
  301. $data = [];
  302. if($bonus_rate != false)
  303. {
  304. $amount = 0;
  305. foreach ($bonus_rate as $rate => $money) {
  306. $amount += $money;
  307. }
  308. $data['bonus_amount'] = serialize(['user_bonus' => $amount]);
  309. }
  310. elseif($pd_amount > 0) {
  311. $data['bonus_amount'] = serialize(['user_bonus' => $pd_amount / 100]);
  312. }
  313. else {
  314. }
  315. $data['bonus_rate'] = '';
  316. $data['pd_amount'] = 0.00;
  317. $mod_order->editOrder($data,['order_id' => $order_id]);
  318. }
  319. }
  320. }
  321. public function stat_behaviorOp()
  322. {
  323. stat_helper::onDaiyBehavior(strtotime('2018-10-1'));
  324. stat_helper::onDaiyBehavior(strtotime('2018-10-2'));
  325. stat_helper::onDaiyBehavior(strtotime('2018-10-3'));
  326. stat_helper::onDaiyBehavior(strtotime('2018-10-4'));
  327. stat_helper::onDaiyBehavior(strtotime('2018-10-5'));
  328. stat_helper::onDaiyBehavior(strtotime('2018-10-6'));
  329. stat_helper::onDaiyBehavior(strtotime('2018-10-7'));
  330. }
  331. public function init_order_sumOp()
  332. {
  333. $mod_member = Model('member');
  334. $i = 0;
  335. while (true)
  336. {
  337. $start = $i * 1000;
  338. $items = $mod_member->field('*')->order('member_id asc')->limit("{$start},1000")->select();
  339. if(empty($items)) {
  340. return;
  341. }
  342. $i++;
  343. foreach ($items as $item)
  344. {
  345. $member_id = intval($item['member_id']);
  346. $this->update_orders($member_id);
  347. }
  348. }
  349. }
  350. private function update_orders($buyer_id)
  351. {
  352. $mod_order = Model('order');
  353. $items = $mod_order->table('order')->field('order_id')->where(['buyer_id' => $buyer_id,'order_state' => ORDER_STATE_SUCCESS])->order('order_id asc')->select();
  354. $sort_num = 1;
  355. foreach ($items as $order) {
  356. $order_id = intval($order['order_id']);
  357. $mod_order->editOrder(['order_num' => $sort_num],['order_id' => $order_id]);
  358. $sort_num++;
  359. }
  360. }
  361. public function update_pvOp()
  362. {
  363. $from = 1496592000;
  364. $now = strtotime(date('Y-m-d',time()));
  365. while ($from <= $now)
  366. {
  367. $this->update_daily_pv($from);
  368. $from += 86400;
  369. }
  370. }
  371. private function update_daily_pv($timestep){
  372. $mod_stat = Model('stat_daily');
  373. $info = $mod_stat->table('stat_daily')->field('call_record')->where(['date_id' => $timestep])->find();
  374. if(empty($info) || empty($info['call_record'])){
  375. return false;
  376. } else {
  377. $call_record = json_decode($info['call_record'],true);
  378. $sum = intval($call_record['ios_count']) + intval($call_record['android_count']) + intval($call_record['android_count']);
  379. if($sum > 0) {
  380. $mod_stat->table('stat_daily')->where(["date_id" => $timestep])->update(["pv" => $sum]);
  381. }
  382. }
  383. }
  384. }