admin_oper.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489
  1. <?php
  2. defined('InShopNC') or exit('Access Invalid!');
  3. require_once(BASE_ROOT_PATH . "/helper/kdn_helper.php");
  4. require_once(BASE_ROOT_PATH . "/helper/predeposit_helper.php");
  5. require_once(BASE_ROOT_PATH . "/helper/pay_helper.php");
  6. require_once(BASE_ROOT_PATH . "/helper/bonus/witholder.php");
  7. require_once(BASE_ROOT_PATH . '/helper/relation_helper.php');
  8. class admin_operControl extends mbMemberControl
  9. {
  10. public function __construct()
  11. {
  12. parent::__construct();
  13. // if($_SESSION['member_id'] != 36429) {
  14. // throw new Exception("必须是管理员才能操作此项功能");
  15. // }
  16. }
  17. private function parse_rate($bonus_rate,&$total_num,&$toal_amount,&$max_rate)
  18. {
  19. $toal_amount = 0;
  20. $total_num = 0;
  21. $max_rate = 0;
  22. $params = explode('#', urldecode($bonus_rate));
  23. $result = [];
  24. foreach ($params as $val)
  25. {
  26. if(preg_match_all('/^(\d{1,2})\|(\d{1,4})\|(\d{1,6})$/', $val, $match))
  27. {
  28. $item['rate'] = intval($match[1][0]);
  29. $item['amount'] = intval($match[2][0]);
  30. $item['num'] = intval($match[3][0]);
  31. $toal_amount += $item['amount'];
  32. $total_num += $item['num'];
  33. if($item['rate'] > $max_rate) {
  34. $max_rate = $item['rate'];
  35. }
  36. $result[] = $item;
  37. }
  38. }
  39. if(empty($result)) {
  40. return false;
  41. }
  42. else {
  43. return $result;
  44. }
  45. }
  46. public function make_bonusOp()
  47. {
  48. if(empty($_GET['bonus_rate'])) {
  49. return self::outerr(errcode::ErrParamter,"bonus_rate 参数为空");
  50. }
  51. $rate_moneys = $this->parse_rate($_GET['bonus_rate'],$total_num,$toal_amount,$max_rate);
  52. if($rate_moneys == false) {
  53. return self::outerr(errcode::ErrParamter,"bonus_rate 参数错误");
  54. } else {
  55. $_GET['total_amount'] = $toal_amount;
  56. $_GET['total_num'] = $total_num;
  57. }
  58. $param_active = bonus_helper::check_activity($_GET,$ret);
  59. if($param_active == false) {
  60. return self::outerr($ret['code'],$ret['msg']);
  61. }
  62. $param_personal = bonus_helper::check_personal($_GET,$ret);
  63. if($param_personal == false) {
  64. return self::outerr($ret['code'],$ret['msg']);
  65. }
  66. $param = array_merge($param_active,$param_personal);
  67. $param['sender_id'] = $_SESSION['member_id'];
  68. $param['sender_mobile'] = $_SESSION['member_mobile'];
  69. $param['sender_name'] = session_helper::nickname();
  70. $type = \bonus\type::crate_by_input($param);
  71. $type->set_rate($max_rate);
  72. $pre_helper = new predeposit_helper($_SESSION['member_id']);
  73. $ret = $pre_helper->admin_make_bonus($type->get_param(),$rate_moneys);
  74. if($ret === false) {
  75. return self::outerr(errcode::ErrBonus,"生成红包失败.");
  76. } else {
  77. $type_sn = $ret['type_sn'];
  78. $url = BASE_SITE_URL . "/mobile/index.php?act=bonusex&op=open&client_type=wap&type_sn={$type_sn}";
  79. return self::outsuccess(array('type_sn' => $ret,'url' => "{$url}"));
  80. }
  81. }
  82. public function resort_realtaionOp()
  83. {
  84. $mod = Model('member_relation');
  85. $items = $mod->field('member_mobile')->limit(false)->select();
  86. foreach ($items as $item)
  87. {
  88. try
  89. {
  90. $mobile = intval($item['member_mobile']);
  91. $relation = new \relation\mem_relation(0,$mobile);
  92. $relation->sort_mobile();
  93. }
  94. catch (Exception $ex) {
  95. Log::record($ex->getMessage(),Log::ERR);
  96. }
  97. }
  98. }
  99. public function putomsOp()
  100. {
  101. $pay_sn = $_GET['pay_sn'];
  102. $trade_no = $_GET['trade_no'];
  103. if(empty($pay_sn) || empty($trade_no)) {
  104. return self::outerr(errcode::ErrApptype);
  105. }
  106. $logic_delivery = Logic('delivery');
  107. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  108. if($ret == true) {
  109. return self::outsuccess(array('state' => true));
  110. } else {
  111. return self::outerr(array('state' => false));
  112. }
  113. }
  114. public function putallOp()
  115. {
  116. $order = Model('order');
  117. $items = $order->table('order')->field('pay_sn,trade_no')->where(array('order_state' => array('in',array(ORDER_STATE_PAY))))->limit(false)->select();
  118. foreach($items as $val)
  119. {
  120. $pay_sn = $val['pay_sn'];
  121. $trade_no = $val['trade_no'];
  122. $logic_delivery = Logic('delivery');
  123. $ret = $logic_delivery->putOrder($pay_sn, $trade_no);
  124. if(!$ret) {
  125. Log::record("putallOp pay_sn={$pay_sn} trade_no = {$trade_no}");
  126. }
  127. }
  128. }
  129. public function reset_bounsOp()
  130. {
  131. $err_user = [];
  132. $mod_member = Model('member');
  133. $items = $mod_member->field('available_predeposit,available_bonus,member_id')->where(array('member_id' => array('gt',0)))->limit(false)->select();
  134. foreach($items as $item)
  135. {
  136. $bonus = [];
  137. $bonus[30] = intval(doubleval($item['available_predeposit']) * 100 + 0.5) / 100;
  138. $strbonus = serialize($bonus);
  139. $member_id = intval($item['member_id']);
  140. $ret = Model()->table('member')->where(array('member_id' => $member_id))->update(array('available_bonus' => $strbonus));
  141. if($ret == false) {
  142. $err_user[] = $member_id;
  143. }
  144. }
  145. if(empty($err_user)) {
  146. return self::outsuccess(null);
  147. } else {
  148. return self::outerr($err_user);
  149. }
  150. }
  151. public function reset_bonus_typeOp()
  152. {
  153. $bonus_type = Model('bonus_type');
  154. $ret = $bonus_type->where(array('type_id' => array('gt',0)))->update(array('bonus_rate' => 30));
  155. if($ret == false) {
  156. return self::outerr(errcode::ErrDB);
  157. } else {
  158. return self::outsuccess(null);
  159. }
  160. }
  161. // // 更新商品序列号
  162. // public function updateGoodsSerialOp()
  163. // {
  164. // $sku_map = Model()->table('sku_map')->limit(10000)->select();
  165. //
  166. // foreach ($sku_map as $value) {
  167. //
  168. // $condition = array('goods_serial_tm' => trim($value['tmsku']));
  169. // $updateinfo = array('goods_serial' => $value['psku']);
  170. //
  171. // $ret = Model('goods_common')->where($condition)->update($updateinfo);
  172. // }
  173. //
  174. // joutput_data(array("ret" => 'complete'));
  175. // }
  176. //
  177. // private function getSign($data)
  178. // {
  179. // return md5(self::$appkey . self::$appPassWord . $data);
  180. // }
  181. //
  182. // public function omsOp()
  183. // {
  184. // $outdata = '{"type":"PUT_TRADE","data":[{"tid":"8000000000026501","total_fee":"360.00","discount_fee":"","post_fee":"0.00","created":"2016-01-11 14:51:39","pay_time":"2016-01-11 14:51:39","buyer_message":"","express_code":"","pay_account_type":"\u5fae\u4fe1\u652f\u4ed8","pay_account_id":"","pay_account_no":"1007070763201601112636550146","buyer_nick":"anonymous_36365","buyer_email":"","trade_memo":"","receiver_name":"\u6c5f\u6d77\u82d7","receiver_state":"\u4e0a\u6d77","receiver_city":"\u4e0a\u6d77\u5e02","receiver_district":"\u5f90\u6c47\u533a","receiver_address":"\u756a\u79ba\u8def876\u53f7","receiver_zip":"000000","receiver_mobile":"13911129867","receiver_phone":"","order_size":1,"orderList":[{"oid":"80000000000265010","tid":"8000000000026501","title":"DQ\u8482\u73c2 \u5378\u5986\u6cb9170ml 170ml","price":"360.00","num":"1","outer_sku_id":"P0300292","outer_sku_properties_name":"DQ\u8482\u73c2 \u5378\u5986\u6cb9170ml 170ml","buyer_nick":"anonymous_36365"}]}]}';
  185. // $sign = $this->getSign($outdata);
  186. // $headers = array('v_appkey: ' . self::$appkey, 'v_sign: ' . $sign, 'Content-Type: application/json');
  187. // http_request(self::$appURL, $outdata, 'POST', false, $headers);
  188. // }
  189. //
  190. // public function test_callbackOp()
  191. // {
  192. // $param['order_sn'] = $_POST['tid'];
  193. // $status = $_POST['status'];
  194. // //$param['consign_time'] = $_POST['consign_time'];
  195. // $param['shipping_code'] = $_POST['logistics_no'];
  196. // $param['oms_code'] = $_POST['logistics_company'];
  197. //
  198. // if (intval($status) === 1) {
  199. // $logic_delivery = Logic('delivery');
  200. // $ret = $logic_delivery->handleCallback($param);
  201. // joutput_data($ret);
  202. // } else {
  203. //
  204. // }
  205. // }
  206. //
  207. // /**
  208. // * 首页
  209. // */
  210. // public function indexOp()
  211. // {
  212. //
  213. // $t = time();
  214. //
  215. // $t1 = date("D F d Y", 1452355200);
  216. //
  217. //// $payment = 500;
  218. //// $payment = $payment = $this->getAndUpdateBonus(36218,$payment);
  219. //// joutput_data(array('$payment'=>$payment));
  220. //
  221. // // 修改地址
  222. // $order_id = "order_id in (297, 401, 923, 928,1097,1145,1150,1154,1244,1248,1281)";
  223. // $model = Model('order_common')->where($order_id)->select();
  224. // $model_address = Model('area');
  225. // $recv_info_array = array();
  226. // if ($model != null) {
  227. //
  228. // foreach ($model as $val) {
  229. // $recv_info = unserialize($val['reciver_info']);
  230. //
  231. // $recv_info['area'] = $model_address->formatAddress($recv_info['area']);
  232. // Model()->table('recv_info')->insert(array('order_id' => $val['order_id'], 'reciver_info' => serialize($recv_info)));
  233. //
  234. // Model('order_common')->where(array('order_id' => $val['order_id']))->update(array('reciver_info' => serialize($recv_info)));
  235. //
  236. // array_push($recv_info_array, $recv_info);
  237. // }
  238. // }
  239. //
  240. // joutput_data($recv_info_array);
  241. // }
  242. //
  243. // public function getAndUpdateBonus($user_id, $pay_amount)
  244. // {
  245. //
  246. // $condition['user_id'] = $user_id;
  247. // $condition['type_id'] = 1;
  248. // $bonus_list = Model()->table("user_bonus")->where($condition)->select();
  249. //
  250. // $ret_value = 0;
  251. // if (!empty($bonus_list)) {
  252. //
  253. // foreach ($bonus_list as $value) {
  254. // $bonus_value = doubleval($value['bonus_value']);
  255. //
  256. // if (($pay_amount - $bonus_value) > 0.0000001) {
  257. //
  258. // $data['bonus_value'] = 0;
  259. // $ret = Model()->table('user_bonus')->where(array('bonus_id' => $value['bonus_id']))->update($data);
  260. //
  261. // if ($ret) {
  262. // $pay_amount -= $bonus_value;
  263. // }
  264. // } else {
  265. //
  266. // $data['bonus_value'] = $bonus_value - $pay_amount;
  267. // $ret = Model()->table('user_bonus')->where(array('bonus_id' => $value['bonus_id']))->update($data);
  268. //
  269. // if ($ret) {
  270. // $pay_amount = 0;
  271. // }
  272. // break;
  273. // }
  274. // }
  275. // }
  276. //
  277. // return $pay_amount;
  278. // }
  279. //
  280. // /**
  281. // * order_sn
  282. // * member_id
  283. // *
  284. // * 手动退款接口
  285. // */
  286. // public function refundOp()
  287. // {
  288. // $model_trade = Model('trade');
  289. // $order_info = Model('order')->getOrderInfo(array('order_sn' => $_GET['order_sn']));
  290. // if (empty($order_info)) return;
  291. //
  292. // $model_refund = Model('refund_return');
  293. // $order_id = intval($order_info['order_id']);
  294. // $condition = array();
  295. // $condition['buyer_id'] = $order_info['buyer_id'];
  296. // $condition['order_id'] = $order_id;
  297. // $order = $model_refund->getRightOrderList($condition);
  298. // $order_amount = $order['order_amount'];//订单金额
  299. // $condition = array();
  300. // $condition['buyer_id'] = $order['buyer_id'];
  301. // $condition['order_id'] = $order['order_id'];
  302. // $condition['goods_id'] = '0';
  303. // $condition['seller_state'] = array('lt', '3');
  304. // $refund_list = $model_refund->getRefundReturnList($condition);
  305. // $refund = array();
  306. // if (!empty($refund_list) && is_array($refund_list)) {
  307. // $refund = $refund_list[0];
  308. // }
  309. // $order_paid = $model_trade->getOrderState('order_paid');//订单状态20:已付款
  310. // $payment_code = $order['payment_code'];//支付方式
  311. // if ($refund['refund_id'] > 0 || $order['order_state'] != $order_paid || $payment_code == 'offline') {//检查订单状态,防止页面刷新不及时造成数据错误
  312. // joutput_error(array("result" => false));
  313. // return false;
  314. // }
  315. //
  316. // $refund_array = array();
  317. // $refund_array['refund_type'] = '1';//类型:1为退款,2为退货
  318. // $refund_array['seller_state'] = '1';//状态:1为待审核,2为同意,3为不同意
  319. // $refund_array['order_lock'] = '2';//锁定类型:1为不用锁定,2为需要锁定
  320. // $refund_array['goods_id'] = '0';
  321. // $refund_array['order_goods_id'] = '0';
  322. // $refund_array['reason_id'] = '0';
  323. // $refund_array['reason_info'] = '取消订单,全部退款';
  324. // $refund_array['goods_name'] = '订单商品全部退款';
  325. // $refund_array['refund_amount'] = ncPriceFormat($order_amount);
  326. // $refund_array['buyer_message'] = $_POST['buyer_message'];
  327. // $refund_array['add_time'] = time();
  328. //
  329. // $pic_array = array();
  330. // $pic_array['buyer'] = '';//$this->upload_pic();//上传凭证
  331. // $info = serialize($pic_array);
  332. // $refund_array['pic_info'] = $info;
  333. // $state = $model_refund->addRefundReturn($refund_array, $order);
  334. //
  335. // if ($state) {
  336. // $model_refund->editOrderLock($order_id);
  337. // joutput_data(array("result" => true));
  338. // return true;
  339. // } else {
  340. // joutput_error(array("result" => false));
  341. // return false;
  342. // }
  343. // }
  344. //
  345. // public function subscribe_kdnOp()
  346. // {
  347. // $ordersn = $_GET['order_sn'];
  348. // kdn_helper::req_subscribe('YD', '3941561454548', $ordersn);
  349. // }
  350. //
  351. // private function merge_user($mod_member,$mobile,$name,$passwd,$balance)
  352. // {
  353. // $user = $mod_member->where(array('member_mobile' => $mobile))->limit(false)->find();
  354. // if(empty($user))
  355. // {
  356. // $data = array();
  357. // $data['member_mobile'] = $mobile;
  358. // $data['member_name'] = $mobile;
  359. // $data['member_passwd'] = $passwd;
  360. // $data['member_nickname'] = $name;
  361. // $data['available_predeposit'] = $balance;
  362. //
  363. // $mod_member->insert($data);
  364. // }
  365. // else
  366. // {
  367. // $data = array();
  368. // $data['member_name'] = $mobile;
  369. // $data['member_nickname'] = $name;
  370. //
  371. // $mod_member->where(array('member_id' => $user['member_id']))->update($data);
  372. // $money = intval($balance * 100 + 0.5);
  373. //
  374. // if($money > 0) {
  375. // $pd_helper = new predeposit_helper($user['member_id']);
  376. // $pd_helper->transform_money($name,$balance);
  377. // }
  378. // }
  379. // }
  380. //
  381. // public function imolduserOp()
  382. // {
  383. // $mod_users = Model('users');
  384. // $mod_member = Model('member');
  385. //
  386. // $users = $mod_users->field('*')->limit(false)->select();
  387. // foreach($users as $val)
  388. // {
  389. // $mobile = $val['mobile'];
  390. // $name = $val['name'];
  391. // $passwd = $val['encrypted_password'];
  392. // $balance = $val['remain_balance'];
  393. //
  394. // $this->merge_user($mod_member,$mobile,$name,$passwd,$balance);
  395. //
  396. // }
  397. // }
  398. //
  399. // public function sendbonusOp()
  400. // {
  401. // $pay_sn = '210510764647050484';
  402. //
  403. // $pay = new pay_helper();
  404. // $pay->success($pay_sn);
  405. //
  406. // }
  407. //
  408. // public function balance_pdbonusOp()
  409. // {
  410. // $member_ids = Model()->table("member")->field("member_id")->order("member_id asc")->limit(false)->select();
  411. // foreach($member_ids as $val) {
  412. // $member_id = $val["member_id"];
  413. //
  414. // $pd = new predeposit_helper($member_id);
  415. // $ret = $pd->get_predeposit();
  416. // $total = intval($ret['total_value'] * 100 + $ret['freeze_value'] * 100 + 0.5);
  417. //
  418. // $holder = new bonus\witholder($member_id);
  419. // $usable_amount = intval($holder->usable_amount() * 100 + 0.5);
  420. //
  421. // echo "total={$total},usable_amout={$usable_amount}<br/>";
  422. // if($total < $usable_amount) {
  423. // echo "witholding<br/>";
  424. // $holder->withold(($usable_amount - $total) / 100);
  425. // }
  426. // }
  427. // }
  428. //
  429. // public function init_relationOp()
  430. // {
  431. // $member_ids = Model()->table("member")->field("member_id")->order("member_id asc")->limit(false)->select();
  432. // foreach($member_ids as $val) {
  433. //
  434. // $member_id = $val["member_id"];
  435. // echo ("add member_id = {$member_id}<br/>");
  436. // relation_helper::onRegister($member_id);
  437. // }
  438. // }
  439. //
  440. // public function add_bonus_expiretimeOp()
  441. // {
  442. // $is_dev = $_GET["dev"];
  443. // $day_secs = 3600 * 24;
  444. //
  445. // if (isset($is_dev) && !empty($is_dev)) {
  446. // $left_secs = $day_secs;
  447. // } else {
  448. // $left_secs = $day_secs * 30;
  449. // }
  450. //
  451. // echo "add bonus expire left seconds: {$left_secs} <br/>";
  452. //
  453. // $expire_time = time() + $left_secs;
  454. //
  455. // $cond = array("bonus_status" => 3);
  456. // $data = array("usable_time" => $expire_time);
  457. //
  458. // $model = Model("user_bonus");
  459. // $ret = $model->edit($cond, $data);
  460. // if ($ret == false) {
  461. // echo 'failed';
  462. // } else {
  463. // echo 'update affect rows: ' . $model->affected_rows();
  464. // }
  465. //
  466. // }
  467. }