predeposit.php 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846
  1. <?php
  2. /**
  3. * 预存款管理
  4. ***/
  5. defined('InShopNC') or exit('Access Invalid!');
  6. class predepositControl extends SystemControl{
  7. const EXPORT_SIZE = 1000;
  8. public function __construct(){
  9. parent::__construct();
  10. Language::read('predeposit');
  11. }
  12. /**
  13. * 充值列表
  14. */
  15. public function predepositOp(){
  16. $condition = array();
  17. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['query_start_date']);
  18. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['query_end_date']);
  19. $start_unixtime = $if_start_date ? strtotime($_GET['query_start_date']) : null;
  20. $end_unixtime = $if_end_date ? strtotime($_GET['query_end_date']): null;
  21. if ($start_unixtime || $end_unixtime) {
  22. $condition['pdr_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  23. }
  24. if (!empty($_GET['mname'])){
  25. $condition['pdr_member_name'] = $_GET['mname'];
  26. }
  27. if ($_GET['paystate_search'] != ''){
  28. $condition['pdr_payment_state'] = $_GET['paystate_search'];
  29. }
  30. $model_pd = Model('predeposit');
  31. $recharge_list = $model_pd->getPdRechargeList($condition,20,'*','pdr_id desc');
  32. //信息输出
  33. Tpl::output('list',$recharge_list);
  34. Tpl::output('show_page',$model_pd->showpage());
  35. Tpl::showpage('pd.list');
  36. }
  37. /**
  38. * 充值编辑(更改成收到款)
  39. */
  40. public function recharge_editOp(){
  41. $id = intval($_GET['id']);
  42. if ($id <= 0){
  43. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=predeposit','','error');
  44. }
  45. //查询充值信息
  46. $model_pd = Model('predeposit');
  47. $condition = array();
  48. $condition['pdr_id'] = $id;
  49. $condition['pdr_payment_state'] = 0;
  50. $info = $model_pd->getPdRechargeInfo($condition);
  51. if (empty($info)){
  52. showMessage(Language::get('admin_predeposit_record_error'),'index.php?act=predeposit&op=predeposit','','error');
  53. }
  54. if (!chksubmit()) {
  55. //显示支付接口列表
  56. $payment_list = Model('payment')->getPaymentOpenList();
  57. //去掉预存款和货到付款
  58. foreach ($payment_list as $key => $value){
  59. if ($value['payment_code'] == 'predeposit' || $value['payment_code'] == 'offline') {
  60. unset($payment_list[$key]);
  61. }
  62. }
  63. Tpl::output('payment_list',$payment_list);
  64. Tpl::output('info',$info);
  65. Tpl::showpage('pd.edit');
  66. exit();
  67. }
  68. //取支付方式信息
  69. $model_payment = Model('payment');
  70. $condition = array();
  71. $condition['payment_code'] = $_POST['payment_code'];
  72. $payment_info = $model_payment->getPaymentOpenInfo($condition);
  73. if(!$payment_info || $payment_info['payment_code'] == 'offline' || $payment_info['payment_code'] == 'offline') {
  74. showMessage(L('payment_index_sys_not_support'),'','html','error');
  75. }
  76. $condition = array();
  77. $condition['pdr_sn'] = $info['pdr_sn'];
  78. $condition['pdr_payment_state'] = 0;
  79. $update = array();
  80. $update['pdr_payment_state'] = 1;
  81. $update['pdr_payment_time'] = strtotime($_POST['payment_time']);
  82. $update['pdr_payment_code'] = $payment_info['payment_code'];
  83. $update['pdr_payment_name'] = $payment_info['payment_name'];
  84. $update['pdr_trade_sn'] = $_POST['trade_no'];
  85. $update['pdr_admin'] = $this->admin_info['name'];
  86. $log_msg = L('admin_predeposit_recharge_edit_state').','.L('admin_predeposit_sn').':'.$info['pdr_sn'];
  87. try {
  88. $trans = new trans_wapper($model_pd,__METHOD__);
  89. //更改充值状态
  90. $state = $model_pd->editPdRecharge($update,$condition);
  91. if (!$state) {
  92. throw Exception(Language::get('predeposit_payment_pay_fail'));
  93. }
  94. //变更会员预存款
  95. $data = array();
  96. $data['member_id'] = $info['pdr_member_id'];
  97. $data['member_name'] = $info['pdr_member_name'];
  98. $data['amount'] = $info['pdr_amount'];
  99. $data['pdr_sn'] = $info['pdr_sn'];
  100. $data['admin_name'] = $this->admin_info['name'];
  101. $isRefill = $model_pd->isRefill($data['member_id']);
  102. $model_pd->changePd('recharge',$data,$isRefill);
  103. $trans->commit();
  104. $this->log($log_msg,1);
  105. showMessage(Language::get('admin_predeposit_recharge_edit_success'),'index.php?act=predeposit&op=predeposit');
  106. } catch (Exception $e) {
  107. $trans->rollback();
  108. $this->log($log_msg,0);
  109. showMessage($e->getMessage(),'index.php?act=predeposit&op=predeposit','html','error');
  110. }
  111. }
  112. /**
  113. * 充值查看
  114. */
  115. public function recharge_infoOp(){
  116. $id = intval($_GET['id']);
  117. if ($id <= 0){
  118. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=predeposit','','error');
  119. }
  120. //查询充值信息
  121. $model_pd = Model('predeposit');
  122. $condition = array();
  123. $condition['pdr_id'] = $id;
  124. $info = $model_pd->getPdRechargeInfo($condition);
  125. if (empty($info)){
  126. showMessage(Language::get('admin_predeposit_record_error'),'index.php?act=predeposit&op=predeposit','','error');
  127. }
  128. Tpl::output('info',$info);
  129. Tpl::showpage('pd.info');
  130. }
  131. /**
  132. * 充值删除
  133. */
  134. public function recharge_delOp(){
  135. $pdr_id = intval($_GET["id"]);
  136. if ($pdr_id <= 0){
  137. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=predeposit','','error');
  138. }
  139. $model_pd = Model('predeposit');
  140. $condition = array();
  141. $condition['pdr_id'] = "$pdr_id";
  142. $condition['pdr_payment_state'] = 0;
  143. $result = $model_pd->delPdRecharge($condition);
  144. if ($result){
  145. showMessage(Language::get('admin_predeposit_recharge_del_success'),'index.php?act=predeposit&op=predeposit');
  146. }else {
  147. showMessage(Language::get('admin_predeposit_recharge_del_fail'),'index.php?act=predeposit&op=predeposit','','error');
  148. }
  149. }
  150. /**
  151. * 预存款日志
  152. */
  153. public function pd_log_listOp(){
  154. $condition = array();
  155. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['stime']);
  156. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['etime']);
  157. $start_unixtime = $if_start_date ? strtotime($_GET['stime']) : null;
  158. $end_unixtime = $if_end_date ? strtotime($_GET['etime']): null;
  159. if ($start_unixtime || $end_unixtime) {
  160. $condition['lg_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  161. }
  162. if (!empty($_GET['mname'])){
  163. $condition['lg_member_name'] = $_GET['mname'];
  164. }
  165. if (!empty($_GET['lg_member_id'])){
  166. $condition['lg_member_id'] = $_GET['lg_member_id'];
  167. }
  168. if (!empty($_GET['aname'])){
  169. $condition['lg_admin_name'] = $_GET['aname'];
  170. }
  171. $model_pd = Model('predeposit');
  172. $list_log = $model_pd->getPdLogList($condition,20,'*','lg_id desc');
  173. Tpl::output('show_page',$model_pd->showpage());
  174. Tpl::output('list_log',$list_log);
  175. Tpl::showpage('pd_log.list');
  176. }
  177. /**
  178. * 提现列表
  179. */
  180. public function pd_cash_listOp(){
  181. $condition = array();
  182. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['stime']);
  183. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['etime']);
  184. $start_unixtime = $if_start_date ? strtotime($_GET['stime']) : null;
  185. $end_unixtime = $if_end_date ? strtotime($_GET['etime']): null;
  186. if ($start_unixtime || $end_unixtime) {
  187. $condition['pdc_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  188. }
  189. if (!empty($_GET['mname'])){
  190. $condition['pdc_member_name'] = $_GET['mname'];
  191. }
  192. if (!empty($_GET['pdc_bank_user'])){
  193. $condition['pdc_bank_user'] = $_GET['pdc_bank_user'];
  194. }
  195. if ($_GET['paystate_search'] != ''){
  196. $condition['pdc_payment_state'] = $_GET['paystate_search'];
  197. }
  198. $model_pd = Model('predeposit');
  199. $cash_list = $model_pd->getPdCashList($condition,20,'*','pdc_payment_state asc,pdc_id asc');
  200. Tpl::output('list',$cash_list);
  201. Tpl::output('show_page',$model_pd->showpage());
  202. Tpl::showpage('pd_cash.list');
  203. }
  204. /**
  205. * 删除提现记录
  206. */
  207. public function pd_cash_delOp(){
  208. $pdc_id = intval($_GET["id"]);
  209. if ($pdc_id <= 0){
  210. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  211. }
  212. $model_pd = Model('predeposit');
  213. $condition = array();
  214. $condition['pdc_id'] = $pdc_id;
  215. $condition['pdc_payment_state'] = 0;
  216. $info = $model_pd->getPdCashInfo($condition);
  217. if (!$info) {
  218. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  219. }
  220. try {
  221. $result = $model_pd->delPdCash($condition);
  222. if (!$result) {
  223. throw new Exception(Language::get('admin_predeposit_cash_del_fail'));
  224. }
  225. //退还冻结的预存款
  226. $model_member = Model('member');
  227. $member_info = $model_member->getMemberInfo(array('member_id'=>$info['pdc_member_id']));
  228. //扣除冻结的预存款
  229. $admininfo = $this->getAdminInfo();
  230. $data = array();
  231. $data['member_id'] = $member_info['member_id'];
  232. $data['member_name'] = $member_info['member_name'];
  233. $data['amount'] = $info['pdc_amount'];
  234. $data['order_sn'] = $info['pdc_sn'];
  235. $data['admin_name'] = $admininfo['name'];
  236. $isRefill = $model_pd->isRefill($data['member_id']);
  237. $model_pd->changePd('cash_del',$data,$isRefill);
  238. $model_pd->commit();
  239. showMessage(Language::get('admin_predeposit_cash_del_success'),'index.php?act=predeposit&op=pd_cash_list');
  240. } catch (Exception $e) {
  241. $model_pd->commit();
  242. showMessage($e->getMessage(),'index.php?act=predeposit&op=pd_cash_list','html','error');
  243. }
  244. }
  245. /**
  246. * 更改提现为支付状态
  247. */
  248. public function pd_cash_payOp(){
  249. $id = intval($_GET['id']);
  250. if ($id <= 0){
  251. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  252. }
  253. $model_pd = Model('predeposit');
  254. $condition = array();
  255. $condition['pdc_id'] = $id;
  256. $condition['pdc_payment_state'] = 0;
  257. $info = $model_pd->getPdCashInfo($condition);
  258. if (!is_array($info) || count($info)<0){
  259. showMessage(Language::get('admin_predeposit_record_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  260. }
  261. //查询用户信息
  262. $model_member = Model('member');
  263. $member_info = $model_member->getMemberInfo(array('member_id'=>$info['pdc_member_id']));
  264. $update = array();
  265. $admininfo = $this->getAdminInfo();
  266. $update['pdc_payment_state'] = 1;
  267. $update['pdc_payment_admin'] = $admininfo['name'];
  268. $update['pdc_payment_time'] = time();
  269. $log_msg = L('admin_predeposit_cash_edit_state').','.L('admin_predeposit_cs_sn').':'.$info['pdc_sn'];
  270. try {
  271. $trans = new trans_wapper($model_pd,__METHOD__);
  272. $result = $model_pd->editPdCash($update,$condition);
  273. if (!$result) {
  274. throw new Exception(Language::get('admin_predeposit_cash_edit_fail'));
  275. }
  276. //扣除冻结的预存款
  277. $data = array();
  278. $data['member_id'] = $member_info['member_id'];
  279. $data['member_name'] = $member_info['member_name'];
  280. $data['amount'] = $info['pdc_amount'];
  281. $data['order_sn'] = $info['pdc_sn'];
  282. $data['admin_name'] = $admininfo['name'];
  283. $isRefill = $model_pd->isRefill($data['member_id']);
  284. $model_pd->changePd('cash_pay',$data,$isRefill);
  285. $trans->commit();
  286. $this->log($log_msg,1);
  287. showMessage(Language::get('admin_predeposit_cash_edit_success'),'index.php?act=predeposit&op=pd_cash_list');
  288. } catch (Exception $e) {
  289. $trans->rollback();
  290. $this->log($log_msg,0);
  291. showMessage($e->getMessage(),'index.php?act=predeposit&op=pd_cash_list','html','error');
  292. }
  293. }
  294. /**
  295. * 查看提现信息
  296. */
  297. public function pd_cash_viewOp(){
  298. $id = intval($_GET['id']);
  299. if ($id <= 0){
  300. showMessage(Language::get('admin_predeposit_parameter_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  301. }
  302. $model_pd = Model('predeposit');
  303. $condition = array();
  304. $condition['pdc_id'] = $id;
  305. $info = $model_pd->getPdCashInfo($condition);
  306. if (!is_array($info) || count($info)<0){
  307. showMessage(Language::get('admin_predeposit_record_error'),'index.php?act=predeposit&op=pd_cash_list','','error');
  308. }
  309. Tpl::output('info',$info);
  310. Tpl::showpage('pd_cash.view');
  311. }
  312. /**
  313. * 导出预存款充值记录
  314. *
  315. */
  316. public function export_step1Op(){
  317. $condition = array();
  318. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['query_start_date']);
  319. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['query_end_date']);
  320. $start_unixtime = $if_start_date ? strtotime($_GET['query_start_date']) : null;
  321. $end_unixtime = $if_end_date ? strtotime($_GET['query_end_date']): null;
  322. if ($start_unixtime || $end_unixtime) {
  323. $condition['pdr_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  324. }
  325. if (!empty($_GET['mname'])){
  326. $condition['pdr_member_name'] = $_GET['mname'];
  327. }
  328. if ($_GET['paystate_search'] != ''){
  329. $condition['pdr_payment_state'] = $_GET['paystate_search'];
  330. }
  331. $model_pd = Model('predeposit');
  332. if (!is_numeric($_GET['curpage'])){
  333. $count = $model_pd->getPdRechargeCount($condition);
  334. $array = array();
  335. if ($count > self::EXPORT_SIZE ){ //显示下载链接
  336. $page = ceil($count/self::EXPORT_SIZE);
  337. for ($i=1;$i<=$page;$i++){
  338. $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
  339. $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
  340. $array[$i] = $limit1.' ~ '.$limit2 ;
  341. }
  342. Tpl::output('list',$array);
  343. Tpl::output('murl','index.php?act=predeposit&op=predeposit');
  344. Tpl::showpage('export.excel');
  345. }else{ //如果数量小,直接下载
  346. $data = $model_pd->getPdRechargeList($condition,'','*','pdr_id desc',self::EXPORT_SIZE);
  347. $rechargepaystate = array(0=>'未支付',1=>'已支付');
  348. foreach ($data as $k=>$v) {
  349. $data[$k]['pdr_payment_state'] = $rechargepaystate[$v['pdr_payment_state']];
  350. }
  351. $this->createExcel($data);
  352. }
  353. }else{ //下载
  354. $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
  355. $limit2 = self::EXPORT_SIZE;
  356. $data = $model_pd->getPdRechargeList($condition,'','*','pdr_id desc',"{$limit1},{$limit2}");
  357. $rechargepaystate = array(0=>'未支付',1=>'已支付');
  358. foreach ($data as $k=>$v) {
  359. $data[$k]['pdr_payment_state'] = $rechargepaystate[$v['pdr_payment_state']];
  360. }
  361. $this->createExcel($data);
  362. }
  363. }
  364. /**
  365. * 生成导出预存款充值excel
  366. *
  367. * @param array $data
  368. */
  369. private function createExcel($data = array()){
  370. Language::read('export');
  371. import('libraries.excel');
  372. $excel_obj = new Excel();
  373. $excel_data = array();
  374. //设置样式
  375. $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1')));
  376. //header
  377. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_no'));
  378. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_member'));
  379. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_ctime'));
  380. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_ptime'));
  381. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_pay'));
  382. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_money'));
  383. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_paystate'));
  384. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_yc_memberid'));
  385. foreach ((array)$data as $k=>$v){
  386. $tmp = array();
  387. $tmp[] = array('data'=>'NC'.$v['pdr_sn']);
  388. $tmp[] = array('data'=>$v['pdr_member_name']);
  389. $tmp[] = array('data'=>date('Y-m-d H:i:s',$v['pdr_add_time']));
  390. if (intval($v['pdr_payment_time'])) {
  391. if (date('His',$v['pdr_payment_time']) == 0) {
  392. $tmp[] = array('data'=>date('Y-m-d',$v['pdr_payment_time']));
  393. } else {
  394. $tmp[] = array('data'=>date('Y-m-d H:i:s',$v['pdr_payment_time']));
  395. }
  396. } else {
  397. $tmp[] = array('data'=>'');
  398. }
  399. $tmp[] = array('data'=>$v['pdr_payment_name']);
  400. $tmp[] = array('format'=>'Number','data'=>ncPriceFormat($v['pdr_amount']));
  401. $tmp[] = array('data'=>$v['pdr_payment_state']);
  402. $tmp[] = array('data'=>$v['pdr_member_id']);
  403. $excel_data[] = $tmp;
  404. }
  405. $excel_data = $excel_obj->charset($excel_data,CHARSET);
  406. $excel_obj->addArray($excel_data);
  407. $excel_obj->addWorksheet($excel_obj->charset(L('exp_yc_yckcz'),CHARSET));
  408. $excel_obj->generateXML($excel_obj->charset(L('exp_yc_yckcz'),CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
  409. }
  410. /**
  411. * 导出预存款提现记录
  412. *
  413. */
  414. public function export_cash_step1Op(){
  415. $condition = array();
  416. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['stime']);
  417. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['etime']);
  418. $start_unixtime = $if_start_date ? strtotime($_GET['stime']) : null;
  419. $end_unixtime = $if_end_date ? strtotime($_GET['etime']): null;
  420. if ($start_unixtime || $end_unixtime) {
  421. $condition['pdc_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  422. }
  423. if (!empty($_GET['mname'])){
  424. $condition['pdc_member_name'] = $_GET['mname'];
  425. }
  426. if (!empty($_GET['pdc_bank_user'])){
  427. $condition['pdc_bank_user'] = $_GET['pdc_bank_user'];
  428. }
  429. if ($_GET['paystate_search'] != ''){
  430. $condition['pdc_payment_state'] = $_GET['paystate_search'];
  431. }
  432. $model_pd = Model('predeposit');
  433. if (!is_numeric($_GET['curpage'])){
  434. $count = $model_pd->getPdCashCount($condition);
  435. $array = array();
  436. if ($count > self::EXPORT_SIZE ){ //显示下载链接
  437. $page = ceil($count/self::EXPORT_SIZE);
  438. for ($i=1;$i<=$page;$i++){
  439. $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
  440. $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
  441. $array[$i] = $limit1.' ~ '.$limit2 ;
  442. }
  443. Tpl::output('list',$array);
  444. Tpl::output('murl','index.php?act=predeposit&op=pd_cash_list');
  445. Tpl::showpage('export.excel');
  446. }else{ //如果数量小,直接下载
  447. $data = $model_pd->getPdCashList($condition,'','*','pdc_id desc',self::EXPORT_SIZE);
  448. $cashpaystate = array(0=>'未支付',1=>'已支付');
  449. foreach ($data as $k=>$v) {
  450. $data[$k]['pdc_payment_state'] = $cashpaystate[$v['pdc_payment_state']];
  451. }
  452. $this->createCashExcel($data);
  453. }
  454. }else{ //下载
  455. $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
  456. $limit2 = self::EXPORT_SIZE;
  457. $data = $model_pd->getPdCashList($condition,'','*','pdc_id desc',"{$limit1},{$limit2}");
  458. $cashpaystate = array(0=>'未支付',1=>'已支付');
  459. foreach ($data as $k=>$v) {
  460. $data[$k]['pdc_payment_state'] = $cashpaystate[$v['pdc_payment_state']];
  461. }
  462. $this->createCashExcel($data);
  463. }
  464. }
  465. /**
  466. * 生成导出预存款提现excel
  467. *
  468. * @param array $data
  469. */
  470. private function createCashExcel($data = array()){
  471. Language::read('export');
  472. import('libraries.excel');
  473. $excel_obj = new Excel();
  474. $excel_data = array();
  475. //设置样式
  476. $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1')));
  477. //header
  478. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_no'));
  479. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_member'));
  480. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_money'));
  481. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_ctime'));
  482. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_state'));
  483. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_tx_memberid'));
  484. foreach ((array)$data as $k=>$v){
  485. $tmp = array();
  486. $tmp[] = array('data'=>'NC'.$v['pdc_sn']);
  487. $tmp[] = array('data'=>$v['pdc_member_name']);
  488. $tmp[] = array('format'=>'Number','data'=>ncPriceFormat($v['pdc_amount']));
  489. $tmp[] = array('data'=>date('Y-m-d H:i:s',$v['pdc_add_time']));
  490. $tmp[] = array('data'=>$v['pdc_payment_state']);
  491. $tmp[] = array('data'=>$v['pdc_member_id']);
  492. $excel_data[] = $tmp;
  493. }
  494. $excel_data = $excel_obj->charset($excel_data,CHARSET);
  495. $excel_obj->addArray($excel_data);
  496. $excel_obj->addWorksheet($excel_obj->charset(L('exp_tx_title'),CHARSET));
  497. $excel_obj->generateXML($excel_obj->charset(L('exp_tx_title'),CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
  498. }
  499. /**
  500. * 预存款明细信息导出
  501. */
  502. public function export_mx_step1Op(){
  503. $condition = array();
  504. $if_start_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['stime']);
  505. $if_end_date = preg_match('/^20\d{2}-\d{2}-\d{2}$/',$_GET['etime']);
  506. $start_unixtime = $if_start_date ? strtotime($_GET['stime']) : null;
  507. $end_unixtime = $if_end_date ? strtotime($_GET['etime']): null;
  508. if ($start_unixtime || $end_unixtime) {
  509. $condition['lg_add_time'] = array('time',array($start_unixtime,$end_unixtime));
  510. }
  511. if (!empty($_GET['mname'])){
  512. $condition['lg_member_name'] = $_GET['mname'];
  513. }
  514. if (!empty($_GET['aname'])){
  515. $condition['lg_admin_name'] = $_GET['aname'];
  516. }
  517. $model_pd = Model('predeposit');
  518. if (!is_numeric($_GET['curpage'])){
  519. $count = $model_pd->getPdLogCount($condition);
  520. $array = array();
  521. if ($count > self::EXPORT_SIZE ){ //显示下载链接
  522. $page = ceil($count/self::EXPORT_SIZE);
  523. for ($i=1;$i<=$page;$i++){
  524. $limit1 = ($i-1)*self::EXPORT_SIZE + 1;
  525. $limit2 = $i*self::EXPORT_SIZE > $count ? $count : $i*self::EXPORT_SIZE;
  526. $array[$i] = $limit1.' ~ '.$limit2 ;
  527. }
  528. Tpl::output('list',$array);
  529. Tpl::output('murl','index.php?act=predeposit&op=pd_log_list');
  530. Tpl::showpage('export.excel');
  531. }else{ //如果数量小,直接下载
  532. $data = $model_pd->getPdLogList($condition,'','*','lg_id desc',self::EXPORT_SIZE);
  533. $this->createmxExcel($data);
  534. }
  535. }else{ //下载
  536. $limit1 = ($_GET['curpage']-1) * self::EXPORT_SIZE;
  537. $limit2 = self::EXPORT_SIZE;
  538. $data = $model_pd->getPdLogList($condition,'','*','lg_id desc',"{$limit1},{$limit2}");
  539. $this->createmxExcel($data);
  540. }
  541. }
  542. /**
  543. * 导出预存款明细excel
  544. *
  545. * @param array $data
  546. */
  547. private function createmxExcel($data = array()){
  548. Language::read('export');
  549. import('libraries.excel');
  550. $excel_obj = new Excel();
  551. $excel_data = array();
  552. //设置样式
  553. $excel_obj->setStyle(array('id'=>'s_title','Font'=>array('FontName'=>'宋体','Size'=>'12','Bold'=>'1')));
  554. //header
  555. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_member'));
  556. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_ctime'));
  557. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_av_money'));
  558. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_freeze_money'));
  559. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_system'));
  560. $excel_data[0][] = array('styleid'=>'s_title','data'=>L('exp_mx_mshu'));
  561. foreach ((array)$data as $k=>$v){
  562. $tmp = array();
  563. $tmp[] = array('data'=>$v['lg_member_name']);
  564. $tmp[] = array('data'=>date('Y-m-d H:i:s',$v['lg_add_time']));
  565. if (floatval($v['lg_av_amount']) == 0){
  566. $tmp[] = array('data'=>'');
  567. } else {
  568. $tmp[] = array('format'=>'Number','data'=>ncPriceFormat($v['lg_av_amount']));
  569. }
  570. if (floatval($v['lg_freeze_amount']) == 0){
  571. $tmp[] = array('data'=>'');
  572. } else {
  573. $tmp[] = array('format'=>'Number','data'=>ncPriceFormat($v['lg_freeze_amount']));
  574. }
  575. $tmp[] = array('data'=>$v['lg_admin_name']);
  576. $tmp[] = array('data'=>$v['lg_desc']);
  577. $excel_data[] = $tmp;
  578. }
  579. $excel_data = $excel_obj->charset($excel_data,CHARSET);
  580. $excel_obj->addArray($excel_data);
  581. $excel_obj->addWorksheet($excel_obj->charset(L('exp_mx_rz'),CHARSET));
  582. $excel_obj->generateXML($excel_obj->charset(L('exp_mx_rz'),CHARSET).$_GET['curpage'].'-'.date('Y-m-d-H',time()));
  583. }
  584. //zmr>v20
  585. //显示添加余额页面
  586. public function predeposit_addOp(){
  587. if (chksubmit()){
  588. $this->add_money();
  589. }
  590. else
  591. {
  592. $model_pd = Model('predeposit');
  593. //信息输出
  594. Tpl::output('show_page',$model_pd->showpage());
  595. Tpl::showpage('predeposit.add');
  596. }
  597. }
  598. /**
  599. * 添加余额
  600. */
  601. public function add_money()
  602. {
  603. $obj_validate = new Validator();
  604. $obj_validate->validateparam = array(
  605. array("input"=>$_POST["member_id"], "require"=>"true", "message"=>Language::get('admin_points_member_error_again')),
  606. array("input"=>$_POST["pointsnum"], "require"=>"true",'validator'=>'Compare','operator'=>' >= ','to'=>1,"message"=>Language::get('admin_points_points_min_error'))
  607. );
  608. $error = $obj_validate->validate();
  609. if ($error != ''){
  610. showMessage($error,'','','error');
  611. }
  612. $money = abs(floatval($_POST['pointsnum']));
  613. $memo=trim($_POST['pointsdesc']);
  614. if ($money <= 0) {
  615. showMessage('输入的金额必需大于0','','html','error');
  616. }
  617. //查询会员信息
  618. $obj_member = Model('member');
  619. $member_id = intval($_POST['member_id']);
  620. $member_info = $obj_member->getMemberInfo(array('member_id'=>$member_id));
  621. if (!is_array($member_info) || count($member_info)<=0){
  622. showMessage("无效的用户信息",'index.php?act=predeposit&op=predeposit_add','','error');
  623. }
  624. $available_predeposit=floatval($member_info['available_predeposit']);
  625. $freeze_predeposit=floatval($member_info['freeze_predeposit']);
  626. if ($_POST['operatetype'] == 2 && $money > $available_predeposit){
  627. showMessage(('预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
  628. }
  629. if ($_POST['operatetype'] == 3 && $money > $available_predeposit){
  630. showMessage(('可冻结预存款不足,会员当前预存款').$available_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
  631. }
  632. if ($_POST['operatetype'] == 4 && $money > $freeze_predeposit){
  633. showMessage(('可恢复冻结预存款不足,会员当前冻结预存款').$freeze_predeposit,'index.php?act=predeposit&op=predeposit_add','','error');
  634. }
  635. $model_pd = Model('predeposit');
  636. $order_sn = $model_pd->makeSn();
  637. $admininfo = $this->getAdminInfo();
  638. $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款,金额为".$money.",编号为".$order_sn;
  639. $admin_act="sys_add_money";
  640. switch ($_POST['operatetype'])
  641. {
  642. case 1:
  643. $admin_act="sys_add_money";
  644. $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【增加】,金额为".$money.",编号为".$order_sn;
  645. break;
  646. case 2:
  647. $admin_act="sys_del_money";
  648. $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【减少】,金额为".$money.",编号为".$order_sn;
  649. break;
  650. case 3:
  651. $admin_act="sys_freeze_money";
  652. $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【冻结】,金额为".$money.",编号为".$order_sn;
  653. break;
  654. case 4:
  655. $admin_act="sys_unfreeze_money";
  656. $log_msg = "管理员【".$admininfo['admin_name']."】操作会员【".$member_info['member_name']."】预存款【解冻】,金额为".$money.",编号为".$order_sn;
  657. break;
  658. default:
  659. showMessage('操作失败','index.php?act=predeposit&op=pd_log_list');
  660. break;
  661. }
  662. try
  663. {
  664. $trans = new trans_wapper($model_pd,__METHOD__);
  665. //扣除冻结的预存款
  666. $data = array();
  667. $data['member_id'] = $member_info['member_id'];
  668. $data['member_name'] = $member_info['member_name'];
  669. $data['amount'] = $money;
  670. $data['order_sn'] = $order_sn;
  671. $data['admin_name'] = $admininfo['name'];
  672. $data['pdr_sn'] = $order_sn;
  673. $data['lg_desc'] = $memo;
  674. $isRefill = $model_pd->isRefill($data['member_id']);
  675. $model_pd->changePd($admin_act,$data,$isRefill);
  676. $trans->commit();
  677. $this->log($log_msg,1);
  678. showMessage('操作成功','index.php?act=predeposit&op=pd_log_list');
  679. } catch (Exception $e) {
  680. $trans->rollback();
  681. $this->log($log_msg,0);
  682. showMessage($e->getMessage(),'index.php?act=predeposit&op=pd_log_list','html','error');
  683. }
  684. }
  685. //取得会员信息
  686. public function checkmemberOp()
  687. {
  688. $name = trim($_GET['name']);
  689. if (!$name){
  690. echo ''; die;
  691. }
  692. $obj_member = Model('member');
  693. $member_info = $obj_member->getMemberInfo(['member_mobile' => $name,'member_mobile_bind' => 1]);
  694. if (is_array($member_info) && count($member_info)>0)
  695. {
  696. if(strtoupper(CHARSET) == 'GBK'){
  697. $member_info['member_name'] = Language::getUTF8($member_info['member_name']);
  698. }
  699. echo json_encode(array('id'=>$member_info['member_id'],
  700. 'name'=>$member_info['member_mobile']."({$member_info['member_nickname']}:{$member_info['member_name']})",
  701. 'available_predeposit'=>$member_info['available_predeposit'],
  702. 'freeze_predeposit'=>$member_info['freeze_predeposit']));
  703. }
  704. else {
  705. echo ''; die;
  706. }
  707. }
  708. public function predeposit_add_multiOp()
  709. {
  710. if (chksubmit())
  711. {
  712. $money = $this->checkMoney();
  713. $member_mobiles = $this->checkMobiles();
  714. $admininfo = $this->getAdminInfo();
  715. $model_pd = Model('predeposit');
  716. $errs = [];$succs = [];
  717. foreach ($member_mobiles as $mobile)
  718. {
  719. $member_info = $this->findmember($mobile);
  720. if($member_info)
  721. {
  722. $order_sn = $model_pd->makeSn();
  723. $log_msg = "管理员【".$admininfo['admin_name']."】批量操作会员【".$member_info['member_name']."】预存款【增加】,金额为".$money.",编号为".$order_sn;
  724. try
  725. {
  726. $trans = new trans_wapper($model_pd,__METHOD__);
  727. //扣除冻结的预存款
  728. $data = array();
  729. $data['member_id'] = $member_info['member_id'];
  730. $data['member_name'] = $member_info['member_name'];
  731. $data['amount'] = $money;
  732. $data['order_sn'] = $order_sn;
  733. $data['admin_name'] = $admininfo['name'];
  734. $data['pdr_sn'] = $order_sn;
  735. $data['lg_desc'] = trim($_POST['pointsdesc']);
  736. $isRefill = $model_pd->isRefill($data['member_id']);
  737. $model_pd->changePd("sys_add_money",$data,$isRefill);
  738. $trans->commit();
  739. $this->log($log_msg,1);
  740. $succs[] = "{$mobile} {$member_info['member_nickname']}/{$member_info['member_name']} ({$member_info['member_id']}) 成功充值 {$money} 元 流水号:{$order_sn}";
  741. } catch (Exception $e) {
  742. $trans->rollback();
  743. $this->log($log_msg,0);
  744. $errs[] = "{$mobile} {$member_info['member_nickname']}/{$member_info['member_name']} ({$member_info['member_id']}) 充值失败 充值 {$money} 元";
  745. }
  746. }else{
  747. $errs[] = "{$mobile} 找不到对应用户 充值 {$money} 元";
  748. }
  749. }
  750. $out = "操作成功:<br>";
  751. $out .="充值失败:>>>>>>>>>>>>>>>>>>>>>>>>><br>";
  752. foreach ($errs as $err){
  753. $out .="{$err}<br>";
  754. }
  755. $out .="充值成功:>>>>>>>>>>>>>>>>>>>>>>>>><br>";
  756. foreach ($succs as $succ){
  757. $out .="{$succ}<br>";
  758. }
  759. showMessage($out,'index.php?act=predeposit&op=predeposit_add_multi','html','succ',1,3600*1000);
  760. }
  761. else
  762. {
  763. $model_pd = Model('predeposit');
  764. //信息输出
  765. Tpl::output('show_page',$model_pd->showpage());
  766. Tpl::showpage('predeposit.add_multi');
  767. }
  768. }
  769. private function findmember($mobile)
  770. {
  771. $obj_member = Model('member');
  772. $member_info = $obj_member->getMemberInfo(['member_mobile' => $mobile,'member_mobile_bind' => 1]);
  773. if(!empty($member_info)){
  774. return $member_info;
  775. }else{
  776. return false;
  777. }
  778. }
  779. private function checkMoney(){
  780. $money = abs(floatval($_POST['pointsnum']));
  781. if ($money <= 0) {
  782. showMessage('输入的金额必需大于0','','html','error');
  783. }
  784. return $money;
  785. }
  786. private function checkMobiles(){
  787. $member_mobiles = trim($_POST["member_name"]);
  788. $member_mobiles = explode(',',$member_mobiles);
  789. if(empty($member_mobiles)){
  790. showMessage("请输入手机号",'','','error');
  791. }
  792. return $member_mobiles;
  793. }
  794. }