licai.php 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275
  1. <?php
  2. /**
  3. * 获取特推理财
  4. * a. 理财表 s. 特推表
  5. */
  6. function get_special_licais($condition,$order="s.sort DESC,s.id DESC",$limit="0,10"){
  7. if($condition!=""){
  8. $extWhere =" and ".$condition;
  9. }
  10. $sql_str = "SELECT a.*,s.name as special_name,s.img as special_img,s.brief as special_brief FROM ".DB_PREFIX."licai a " .
  11. "LEFT JOIN ".DB_PREFIX."licai_recommend s ON s.licai_id = a.id " .
  12. "WHERE 1=1 $extWhere ORDER BY ".$order." LIMIT ".$limit;
  13. $list = $GLOBALS['db']->getAll($sql_str);
  14. if($list){
  15. foreach($list as $k=>$v){
  16. $list[$k] = licai_item_format($v);
  17. }
  18. }
  19. return $list;
  20. }
  21. /**
  22. * 获取理财列表
  23. * $condition 条件语句 无 and 打头
  24. * $order 排序
  25. * $limit 条数
  26. */
  27. function get_licai_list($condition,$order="sort DESC,id DESC",$limit="0,10"){
  28. if($condition!=""){
  29. $extWhere = " AND ".$condition;
  30. }
  31. $sql_count = "SELECT COUNT(*) FROM ".DB_PREFIX."licai WHERE 1=1 ".$extWhere;
  32. $rs_count = $GLOBALS['db']->getOne($sql_count);
  33. $list = array();
  34. if($rs_count > 0){
  35. $sql_str = "SELECT * FROM ".DB_PREFIX."licai WHERE 1=1 ".$extWhere." ORDER BY ".$order." LIMIT ".$limit;
  36. $list = $GLOBALS['db']->getAll($sql_str);
  37. if($list){
  38. foreach($list as $k=>$v){
  39. $list[$k] = licai_item_format($v);
  40. }
  41. }
  42. }
  43. return array("rs_count"=>$rs_count,"list"=>$list);
  44. }
  45. /**
  46. * 获取单个理财信息
  47. */
  48. function get_licai($id){
  49. if($id==0){
  50. return false;
  51. }
  52. $sql = "SELECT * FROM ".DB_PREFIX."licai WHERE id= ".$id;
  53. $result = $GLOBALS['db']->getRow($sql);
  54. if($result){
  55. $result = licai_item_format($result);
  56. if($result['type'] > 0 ){
  57. $result['licai_interest'] = $GLOBALS['db']->getAll("SELECT * FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$result['id']." ORDER BY max_money ASC ");
  58. }
  59. else
  60. {
  61. $licai = $GLOBALS['db']->getRow("SELECT id,platform_rate,site_buy_fee_rate,redemption_fee_rate FROM ".DB_PREFIX."licai WHERE id=".$result['id']);
  62. $licai_interest = get_licai_interest_yeb($licai["id"],$result["begin_interest_date"],$result["end_interest_date"]);
  63. $result['licai_interest'] = array(
  64. "average_income_rate" => $licai_interest["avg_interest_rate"],
  65. "platform_rate" => $licai["platform_rate"],
  66. "site_buy_fee_rate" => $licai["site_buy_fee_rate"],
  67. "redemption_fee_rate" => $licai["redemption_fee_rate"],
  68. "days" => $licai_interest["days"],
  69. "interest_rate" => $licai_interest["interest_rate"],
  70. );
  71. }
  72. }
  73. return $result;
  74. }
  75. /**
  76. * 获取最近购买的
  77. * $type 0模拟数据 1真实数据
  78. */
  79. function get_licai_dealshow($limit=10,$type=0){
  80. $d_table="licai_dealshow";
  81. if($type==1)
  82. $d_table="licai_order";
  83. $sql="SELECT d.*,l.id,l.name,l.img FROM ".DB_PREFIX.$d_table." d LEFT JOIN ".DB_PREFIX."licai l ON l.id = d.licai_id ORDER BY d.id DESC LIMIT ".$limit;
  84. $list = $GLOBALS['db']->getAll($sql);
  85. foreach($list as $k=>$v){
  86. $list[$k] = licai_item_format($v);
  87. }
  88. return $list;
  89. }
  90. /**
  91. * 格式化理财
  92. */
  93. function licai_item_format($vo){
  94. //能购买的时间
  95. if($vo['type']>0){
  96. }else{
  97. $vo['end_buy_date'] = $vo['end_date'];
  98. }
  99. if(to_timespan($vo['end_buy_date'])==0){
  100. $vo['buy_limit_format'] = "无限期";
  101. $vo['date_limit'] = "无限期";
  102. $vo['buy_limit'] = -1;
  103. }
  104. else{
  105. $time_limit = to_timespan($vo['end_buy_date']) - to_timespan($vo['begin_buy_date']);
  106. $vo['buy_limit_format'] = intval($time_limit/3600/24);
  107. $vo['begin_date'] = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
  108. if(to_timespan($vo['end_buy_date']) > $vo['begin_date']){
  109. $date_limit =to_timespan($vo['end_buy_date'])- to_timespan($vo['begin_date']);
  110. $vo['date_limit'] = intval($date_limit/3600/24);
  111. }
  112. if(to_timespan($vo['end_buy_date']) > NOW_TIME)
  113. $vo['buy_limit'] = NOW_TIME - to_timespan($vo['begin_buy_date']);
  114. else
  115. $vo['buy_limit'] = $time_limit;
  116. }
  117. if($vo['min_money']!=0){
  118. $vo['min_money_format'] = format_price($vo['min_money']);
  119. if($vo['min_money']>0){
  120. $vo['min_money_format_num']=floatval($vo['min_money']/10000).'万元';
  121. }
  122. }
  123. else{
  124. $vo['min_money_format_num'] = "不限";
  125. }
  126. if($vo['product_size']!=0){
  127. if($vo['product_size']>0&&$vo['product_size']<100000000){
  128. $vo['product_size_format_num']=floatval($vo['product_size']/10000).'万元';
  129. }elseif($vo['product_size']>=100000000){
  130. $vo['product_size_format_num']=floatval($vo['product_size']/100000000).'亿元';
  131. }
  132. }
  133. //安全等级
  134. switch($vo['risk_rank']){
  135. case 0:
  136. $vo['risk_rank_format'] = "低";
  137. break;
  138. case 1:
  139. $vo['risk_rank_format'] = "中";
  140. break;
  141. case 2:
  142. $vo['risk_rank_format'] = "高";
  143. break;
  144. default :
  145. $vo['risk_rank_format'] = "未知";
  146. break;
  147. }
  148. //理财产品类型
  149. switch($vo['type']){
  150. case 0:
  151. $vo['type_format'] = "余额宝";
  152. break;
  153. case 1:
  154. $vo['type_format'] = "固定定存";
  155. break;
  156. //case 2:
  157. // $vo['type_format'] = "浮动定存";
  158. // break;
  159. //case 3:
  160. // $vo['type_format'] = "票据";
  161. // break;
  162. //case 4:
  163. // $vo['type_format'] = "基金";
  164. // break;
  165. default :
  166. $vo['type_format'] = "未知";
  167. break;
  168. }
  169. //是否托管
  170. switch($vo['is_deposit']){
  171. case 0:
  172. $vo['deposit_format'] = "非托管";
  173. break;
  174. case 1:
  175. $vo['deposit_format'] = "托管";
  176. break;
  177. default :
  178. $vo['deposit_format'] = "未知";
  179. break;
  180. }
  181. //算息时间
  182. switch($vo['begin_interest_type']){
  183. case 0:
  184. $vo['begin_interest_type_format'] = "当日生效";
  185. break;
  186. case 1:
  187. $vo['begin_interest_type_format'] = "次日生效";
  188. break;
  189. case 2:
  190. $vo['begin_interest_type_format'] = "下个工作日生效";
  191. break;
  192. case 3:
  193. $vo['begin_interest_type_format'] = "下二个工作日";
  194. break;
  195. default :
  196. $vo['begin_interest_type_format'] = "未知";
  197. break;
  198. }
  199. $vo['url'] = url("licai#deal",array("id"=>$vo['id']));
  200. $vo["average_income_rate"]=number_format($vo["average_income_rate"],2);
  201. $vo['average_income_rate_format'] = number_format($vo["average_income_rate"],4) . "%";
  202. $vo["licai_status"] = get_licai_status($vo["id"]);
  203. //状态
  204. switch($vo['licai_status']){
  205. case 0:
  206. $vo['licai_status_format'] = "预热期";
  207. break;
  208. case 1:
  209. $vo['licai_status_format'] = "理财期";
  210. break;
  211. case 2:
  212. $vo['licai_status_format'] = "无限期";
  213. break;
  214. }
  215. switch($vo["review_type"])
  216. {
  217. case 0:
  218. $vo["review_type_format"] = "发起人审核" ;
  219. break;
  220. case 1:
  221. $vo["review_type_format"] = "网站和发起人审核" ;
  222. break;
  223. case 2:
  224. $vo["review_type_format"] = "自动审核" ;
  225. break;
  226. }
  227. if($vo['type'] >0 )
  228. {
  229. $vo['begin_interest_date'] = to_timespan($vo['begin_interest_date'])==0 ? to_date(NOW_TIME,"Y-m-d") : (to_timespan($vo['begin_interest_date'],"Y-m-d") > to_timespan(to_date(NOW_TIME,"Y-m-d"),"Y-m-d") ? $vo['begin_interest_date'] : to_date(NOW_TIME,"Y-m-d") );
  230. //预热期
  231. $vo['before_interest_date'] = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
  232. if(to_timespan($vo['before_interest_date']) > 0 && to_timespan($vo['before_interest_date'],"Y-m-d") > to_timespan($vo['begin_interest_date'],"Y-m-d")){
  233. $vo['before_interest_date'] = $vo['begin_interest_date'];
  234. }
  235. //预热结束时间
  236. $vo['before_interest_enddate'] = $vo['begin_interest_date'];
  237. $vo['before_day'] = 0;
  238. $before_time_limit = to_timespan($vo['before_interest_enddate'],"Y-m-d") - to_timespan($vo['before_interest_date'],"Y-m-d");
  239. if($before_time_limit > 0){
  240. $vo['before_day'] = $before_time_limit / 24 / 3600;
  241. }
  242. //起息时间
  243. $begin_interest_date = get_peizi_next_date(NOW_TIME,$vo['begin_interest_type']);
  244. if(to_timespan($begin_interest_date,"Y-m-d") > to_timespan($vo['begin_interest_date'],"Y-m-d")){
  245. $vo['begin_interest_date'] = $begin_interest_date;
  246. }
  247. if($vo['time_limit'] == 0)
  248. {
  249. $vo['end_interest_date'] = $vo['end_date'];
  250. }
  251. //无项目结束时间 有周期
  252. elseif(to_timespan($vo['end_date']) == 0 && $vo['time_limit'] > 0){
  253. $vo['end_interest_date'] = to_date(next_month(NOW_TIME,$vo['time_limit']),"Y-m-d");
  254. }
  255. //有项目结束时间 有周期
  256. elseif(to_timespan($vo['end_date']) > 0 && $vo['time_limit'] > 0){
  257. //如果项目结束时间大于周期那么使用周期时间
  258. $str_time = to_timespan($vo['begin_interest_date']);
  259. if(to_timespan($vo['end_date'],"Y-m-d") > to_timespan(to_date(next_month($str_time,$vo['time_limit']),"Y-m-d"))){
  260. $vo['end_interest_date'] = to_date(next_month($str_time,$vo['time_limit']),"Y-m-d");
  261. }
  262. else{
  263. $vo['end_interest_date'] = $vo['end_date'];
  264. }
  265. }
  266. $vo['end_interest_date_format'] = to_date($vo['end_date']);
  267. $vo['buy_day'] = 0;
  268. $buy_time_limit = to_timespan($vo['end_interest_date'],"Y-m-d") - to_timespan($vo['begin_interest_date'],"Y-m-d");
  269. if($buy_time_limit >= 0){
  270. $vo['buy_day'] = $buy_time_limit / 24 / 3600 ;
  271. }
  272. if($vo["end_date"] == "0000-00-00" ||$vo["end_date"] == "" )
  273. {
  274. $vo["end_date"] = "无期限";
  275. }
  276. }
  277. //余额宝
  278. else
  279. {
  280. $vo['before_day'] = 0;
  281. $vo['end_buy_date'] = $vo['end_date'];
  282. $vo['buy_day'] = 0;
  283. $vo['begin_interest_date'] = to_timespan($vo['begin_interest_date'])==0 ? to_date(NOW_TIME,"Y-m-d") : (to_timespan($vo['begin_interest_date'],"Y-m-d") > to_timespan(to_date(NOW_TIME,"Y-m-d"),"Y-m-d") ? $vo['begin_interest_date'] : to_date(NOW_TIME,"Y-m-d") );
  284. $vo['begin_interest_date'] = get_peizi_next_date(to_timespan($vo['begin_interest_date']),$vo['begin_interest_type']);
  285. $vo['end_interest_date'] = $vo['end_date'];
  286. $buy_time_limit = to_timespan($vo['end_date'],"Y-m-d") - to_timespan($vo['begin_buy_date'],"Y-m-d");
  287. if($buy_time_limit >= 0){
  288. $vo['buy_day'] = $buy_time_limit / 24 / 3600;
  289. }
  290. if($vo["end_date"] == "0000-00-00" ||$vo["end_date"] == "" )
  291. {
  292. $vo["end_date"] = "已结束";
  293. }
  294. //$vo['time_limit'] = intval($buy_time_limit/3600/24/30);
  295. $vo['platform_rate_format'] = number_format($vo['platform_rate'],4)."%";
  296. $vo['site_buy_fee_rate_format']= number_format($vo['site_buy_fee_rate'],4)."%";
  297. $vo['redemption_fee_rate_format']= number_format($vo['redemption_fee_rate'],4)."%";
  298. }
  299. $vo["service_fee_rate_format"] = number_format($vo["service_fee_rate"],4). "%";
  300. $vo["subscribing_amount_format"] = format_price($vo["subscribing_amount"]);
  301. $vo["subscribing_amount_format_num"] = number_format($vo["subscribing_amount"]/10000);
  302. $vo['begin_interest_date_time'] = to_timespan($vo['begin_interest_date'],"Y-m-d");
  303. $vo['end_buy_date_time'] = to_timespan($vo['end_buy_date'],"Y-m-d");
  304. $vo['begin_buy_date_time'] = to_timespan($vo['begin_buy_date'],"Y-m-d");
  305. $vo['end_date_time'] = to_timespan($vo['end_date'],"Y-m-d");
  306. return $vo;
  307. }
  308. /**
  309. * 理财产品参数更新
  310. * id int 理财ID
  311. */
  312. function syn_licai_status($id,$type = 1){
  313. if($id==0){
  314. return false;
  315. }
  316. $data=array();
  317. if($type > 0 )
  318. {
  319. $data['average_income_rate'] = $GLOBALS['db']->getOne("SELECT avg(interest_rate) FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$id);
  320. }
  321. else
  322. {
  323. $data['average_income_rate'] = $GLOBALS['db']->getOne("SELECT avg(rate) FROM ".DB_PREFIX."licai_history WHERE licai_id=".$id);
  324. }
  325. $sum_rs = $GLOBALS['db']->getRow("SELECT count(*) as total_people,sum(money) as subscribing_amount FROM ".DB_PREFIX."licai_order where licai_id=".$id);
  326. $data['total_people'] = $sum_rs['total_people'];
  327. $data['subscribing_amount'] = $sum_rs['subscribing_amount'];
  328. $GLOBALS['db']->autoExecute(DB_PREFIX."licai",$data,"UPDATE","id=".$id);
  329. }
  330. function licai_bid($id,$money,$paypassword){
  331. $return = array("status"=>0,"info"=>"");
  332. if(intval($GLOBALS['user_info']['id']) == 0){
  333. $return['info'] = "请先登录";
  334. return $return;
  335. }
  336. if(intval($GLOBALS['user_info']['money']) < $money){
  337. $return['info'] = "账户余额不足";
  338. return $return;
  339. }
  340. if($GLOBALS['user_info']['paypassword'] != md5($paypassword)){
  341. $return['info'] = "支付密码错误";
  342. return $return;
  343. }
  344. $licai = $GLOBALS['db']->getRow("SELECT * FROM ".DB_PREFIX."licai where id=".$id);
  345. $licai['url'] = url("licai#deal",array("id"=>$licai['id']));
  346. if($licai['user_id'] == $GLOBALS['user_info']['id']){
  347. $return['info'] = "不能购买自己发布的理财产品";
  348. return $return;
  349. }
  350. if(!$licai || $licai['status'] == 0){
  351. $return['info'] = "理财产品不存在";
  352. return $return;
  353. }
  354. if(to_timespan($licai['begin_buy_date'],"Y-m-d") > 0 && to_timespan($licai['begin_buy_date'],"Y-m-d") > NOW_TIME){
  355. $return['info'] = "理财产品还未开始允许购买";
  356. return $return;
  357. }
  358. if(to_timespan($licai['end_buy_date'],"Y-m-d") > 0 && to_timespan($licai['end_buy_date'],"Y-m-d") < NOW_TIME){
  359. $return['info'] = "理财产品已结束购买";
  360. return $return;
  361. }
  362. if(to_timespan($licai['end_date'],"Y-m-d") > 0 && to_timespan($licai['end_date'],"Y-m-d") < NOW_TIME){
  363. $return['info'] = "理财产品已结束";
  364. return $return;
  365. }
  366. if(floatval($licai['min_money'])!=0){
  367. if($money < floatval($licai['min_money'])){
  368. $return['info'] = "最小购买金额为:".format_price($licai['min_money']);
  369. return $return;
  370. }
  371. }
  372. if(floatval($licai['max_money'])!=0){
  373. if($money > floatval($licai['max_money'])){
  374. $return['info'] = "最大购买金额为:".format_price($licai['max_money']);
  375. return $return;
  376. }
  377. }
  378. $licai_order_data = array();
  379. $licai_order_data['status'] = 1;
  380. $licai_order_data['licai_id'] = $id;
  381. $licai_order_data['user_id'] = intval($GLOBALS['user_info']['id']);
  382. $licai_order_data['user_name'] = $GLOBALS['user_info']['user_name'];
  383. $licai_order_data['money'] = $money;
  384. $licai_order_data['create_time'] = to_date(NOW_TIME);
  385. $licai_order_data['create_date'] = to_date(NOW_TIME);
  386. //算息时间
  387. $licai_order_data['begin_interest_type'] = $licai['begin_interest_type'];
  388. $licai['begin_interest_date'] = (to_timespan($licai['begin_interest_date'])==0 || to_timespan($licai['begin_interest_date']) < NOW_TIME) ? to_date(NOW_TIME,"Y-m-d") : $licai['begin_interest_date'] ;
  389. //预热期
  390. if($licai['type'] > 0){
  391. //预热开始时间 | 购买开始时间
  392. $licai_order_data['before_interest_date'] = get_peizi_next_date(NOW_TIME,$licai['begin_interest_type']);
  393. if(to_timespan($licai_order_data['before_interest_date'],"Y-m-d") > 0 && to_timespan($licai['before_interest_date'],"Y-m-d") > to_timespan($licai['begin_interest_date'],"Y-m-d")){
  394. $licai_order_data['before_interest_date'] = $licai['begin_interest_date'];
  395. }
  396. //预热结束时间
  397. $licai_order_data['before_interest_enddate'] = $licai['begin_interest_date'];
  398. }
  399. //起息时间
  400. $licai_order_data['begin_interest_date'] = get_peizi_next_date(NOW_TIME,$licai['begin_interest_type']);
  401. if(to_timespan($licai_order_data['begin_interest_date'],"Y-m-d") < to_timespan($licai['begin_interest_date'],"Y-m-d")){
  402. $licai_order_data['begin_interest_date'] = $licai['begin_interest_date'];
  403. }
  404. //结束时间
  405. if($licai['time_limit'] == 0){
  406. $licai_order_data['end_interest_date'] = $licai['end_date'];
  407. }
  408. //无项目结束时间 有周期
  409. elseif(to_timespan($licai['end_date'],"Y-m-d") == 0 && $licai['time_limit'] > 0){
  410. $licai_order_data['end_interest_date'] = to_date(next_month(NOW_TIME,$licai['time_limit']),"Y-m-d");
  411. }
  412. //有项目结束时间 有周期
  413. elseif(to_timespan($licai['end_date'],"Y-m-d") > 0 && $licai['time_limit'] > 0){
  414. //如果项目结束时间大于周期那么使用周期时间
  415. //$str_time = to_timespan($licai['begin_interest_date'],"Y-m-d");
  416. $str_time = to_timespan($licai_order_data['begin_interest_date'],"Y-m-d");
  417. if(to_timespan($licai['end_date']) > to_timespan(to_date(next_month($str_time,$licai['time_limit']),"Y-m-d"),"Y-m-d")){
  418. $licai_order_data['end_interest_date'] = to_date(next_month($str_time,$licai['time_limit']),"Y-m-d");
  419. }
  420. else{
  421. $licai_order_data['end_interest_date'] = $licai['end_date'];
  422. }
  423. }
  424. if($licai['type'] > 0){
  425. $interest_rs = get_licai_interest($id,$money);
  426. //预热利息
  427. $licai_order_data['before_rate'] = $interest_rs['before_rate'];
  428. //预热违约利息
  429. $licai_order_data['before_breach_rate'] = $interest_rs['before_breach_rate'];
  430. //正常利息
  431. $licai_order_data['interest_rate'] = $interest_rs['interest_rate'];
  432. //违约利息
  433. $licai_order_data['breach_rate'] = $interest_rs['breach_rate'];
  434. //申购手续费
  435. $licai_order_data['site_buy_fee_rate'] = $interest_rs['site_buy_fee_rate'];
  436. //赎回手续费
  437. $licai_order_data['redemption_fee_rate'] = $interest_rs['redemption_fee_rate'];
  438. //平台收益
  439. $licai_order_data['platform_rate'] = $interest_rs['platform_rate'];
  440. //用户违约平台收益
  441. $licai_order_data['platform_breach_rate'] = $interest_rs['platform_breach_rate'];
  442. //冻结保证金比例
  443. $licai_order_data['freeze_bond_rate'] = $interest_rs['freeze_bond_rate'];
  444. }
  445. else
  446. {
  447. $licai_order_data['before_rate'] = 0;
  448. $licai_order_data['before_breach_rate'] = 0;
  449. $licai_order_data['interest_rate'] = 0;
  450. $licai_order_data['breach_rate'] = 0;
  451. $licai_order_data['platform_breach_rate'] = 0;
  452. $licai_order_data['freeze_bond_rate'] = 0;
  453. $licai_order_data['platform_rate'] = $licai['platform_rate'];
  454. $licai_order_data['site_buy_fee_rate'] = $licai['site_buy_fee_rate'];
  455. $licai_order_data['redemption_fee_rate'] = $licai['redemption_fee_rate'];
  456. }
  457. //预热期利息
  458. $licai_order_data['before_interest'] = $money * floatval($licai_order_data['before_rate']) * 0.01 * ((to_timespan($licai_order_data['before_interest_enddate']) - to_timespan($licai_order_data['before_interest_date']))/24/3600) / 365; //余额宝时为0
  459. $licai_order_data['site_buy_fee'] = $money * floatval($licai_order_data['site_buy_fee_rate']) * 0.01;
  460. //$licai_order_data['freeze_bond_rate'] = $licai['freeze_bond_rate'];
  461. //冻结的保证金,扣除网站收取的手续费
  462. $licai_order_data['freeze_bond'] = round($licai_order_data['freeze_bond_rate'] * ($money-$licai_order_data['site_buy_fee']) * 0.01,2); //余额宝时为0
  463. $licai_order_data['pay_money'] = $money - $licai_order_data['site_buy_fee'] - $licai_order_data['freeze_bond'] ;
  464. //成交服务费
  465. $licai_order_data['service_fee_rate'] = $licai['service_fee_rate'];
  466. $licai_order_data['service_fee'] = floatval($licai['service_fee_rate']) * 0.01 * ($money - $licai_order_data['site_buy_fee']);
  467. //print_r($licai_order_data);die();
  468. $GLOBALS['db']->autoExecute(DB_PREFIX."licai_order",$licai_order_data,"INSERT");
  469. if($GLOBALS['db']->affected_rows()){
  470. require_once(APP_ROOT_PATH.'system/libs/user.php');
  471. //理财购买本金
  472. modify_account(array("money"=>'-'.($money-$licai_order_data['site_buy_fee'])),$GLOBALS['user_info']['id'],"购买理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”,购买本金",array('type'=>42));
  473. //理财购买手续费
  474. modify_account(array("money"=>'-'.$licai_order_data['site_buy_fee']),$GLOBALS['user_info']['id'],"购买理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”,购买手续费",array('type'=>43));
  475. //理财发放资金
  476. modify_account(array("money"=>$licai_order_data['pay_money']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的投资,理财购买资金",array('type'=>46));
  477. if($licai_order_data['freeze_bond'] > 0)
  478. {
  479. //理财冻结资金
  480. modify_account(array("mortgage_money"=>$licai_order_data['freeze_bond']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的投资,理财冻结资金",array('type'=>44));
  481. }
  482. if($licai_order_data['service_fee']!=0)
  483. {
  484. //理财服务费
  485. modify_account(array("money"=>'-'.$licai_order_data['service_fee']),intval($licai['user_id']),$GLOBALS['user_info']['user_name']."对理财“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的投资,理财服务费",array('type'=>45));
  486. }
  487. if($licai['type'] >0 )
  488. {
  489. syn_licai_status($id);
  490. }
  491. else
  492. {
  493. syn_licai_status($id,0);
  494. }
  495. $return['status'] = 1;
  496. $return['info'] = "购买成功";
  497. return $return;
  498. }
  499. }
  500. ///获取余额宝总收益费率
  501. ///$id 理财编号
  502. ///$begin_date 起息时间 Y-m-d
  503. ///$end_date 结束时间 Y-m-d
  504. function get_licai_interest_yeb($id,$begin_date,$end_date)
  505. {
  506. if($id==0)
  507. return null;
  508. $licai = $GLOBALS["db"]->getRow("select * from ".DB_PREFIX."licai where id =".$id." and type = 0 ");
  509. if(!$licai)
  510. {
  511. return null;
  512. }
  513. $interest = $GLOBALS["db"]->getRow("select sum(rate) as sum_rate,count(*) as sum_count from ".DB_PREFIX."licai_history where licai_id =".$id." and history_date >= '".$begin_date."' and history_date <'".$end_date."'");
  514. $days=(to_timespan($end_date)-to_timespan($begin_date))/3600/24;
  515. $avg = number_format($interest["sum_rate"]/$interest["sum_count"],4);
  516. return array(
  517. "days" => $days,
  518. "interest_rate"=>$interest["sum_rate"],
  519. "avg_interest_rate" => $avg,
  520. "site_buy_fee_rate"=>$licai["site_buy_fee_rate"], //购买手续费
  521. "redemption_fee_rate"=>$licai["redemption_fee_rate"], //赎回手续费
  522. "platform_rate"=>$licai["platform_rate"], //平台收益
  523. );
  524. }
  525. /**
  526. * 获取理财收益费率
  527. * $id 理财ID $money金额 投资金额 或赎回金额
  528. */
  529. function get_licai_interest($id,$money){
  530. if($id==0)
  531. return null;
  532. $licai['licai_interest'] = $GLOBALS['db']->getAll("SELECT * FROM ".DB_PREFIX."licai_interest WHERE licai_id=".$id." ORDER BY max_money ASC ");
  533. $before_rate = 0; //预热期利率
  534. $before_breach_rate = 0; //预热期违约利率
  535. $interest_rate = 0; //利息率
  536. $breach_rate = 0; //正常利息 违约收益率
  537. $site_buy_fee_rate=0; //网站购买手续费
  538. $redemption_fee_rate = 0; //赎回手续费
  539. $platform_rate = 0; //平台收益率
  540. $platform_breach_rate = 0; // 用户违约网站收益
  541. $freeze_bond_rate = 0;
  542. $count_str = count($licai['licai_interest']) - 1;
  543. if($count_str >= 0 && $licai['licai_interest'][$count_str]['max_money'] < $money ){
  544. $before_rate = $licai['licai_interest'][$count_str]['before_rate'];
  545. $before_breach_rate = $licai['licai_interest'][$count_str]['before_breach_rate'];
  546. $interest_rate = $licai['licai_interest'][$count_str]['interest_rate'];
  547. $breach_rate = $licai['licai_interest'][$count_str]['breach_rate'];
  548. $site_buy_fee_rate = $licai['licai_interest'][$count_str]['site_buy_fee_rate'];
  549. $redemption_fee_rate = $licai['licai_interest'][$count_str]['redemption_fee_rate'];
  550. $platform_rate = $licai['licai_interest'][$count_str]['platform_rate'];
  551. $platform_breach_rate = $licai['licai_interest'][$count_str]['platform_breach_rate'];
  552. $freeze_bond_rate = $licai['licai_interest'][$count_str]['freeze_bond_rate'];
  553. }
  554. elseif($count_str >= 0){
  555. foreach($licai['licai_interest'] as $k=>$v){
  556. if($v['min_money'] <$money && $v['max_money']>=$money){
  557. $before_rate = $v['before_rate'];
  558. $before_breach_rate = $v['before_breach_rate'];
  559. $interest_rate = $v['interest_rate'];
  560. $breach_rate = $v['breach_rate'];
  561. $site_buy_fee_rate = $v['site_buy_fee_rate'];
  562. $redemption_fee_rate = $v['redemption_fee_rate'];
  563. $platform_rate = $v['platform_rate'];
  564. $platform_breach_rate = $v['platform_breach_rate'];
  565. $freeze_bond_rate = $v['freeze_bond_rate'];
  566. }
  567. }
  568. }
  569. return array(
  570. "interest"=>$licai['licai_interest'],
  571. "before_rate"=>$before_rate,
  572. "before_breach_rate"=>$before_breach_rate,
  573. "interest_rate"=>$interest_rate,
  574. "breach_rate"=>$breach_rate,
  575. "site_buy_fee_rate"=>$site_buy_fee_rate,
  576. "redemption_fee_rate"=>$redemption_fee_rate,
  577. "platform_rate"=>$platform_rate,
  578. "platform_breach_rate"=>$platform_breach_rate,
  579. "freeze_bond_rate"=>$freeze_bond_rate,
  580. );
  581. }
  582. /**
  583. * 下一交易日
  584. */
  585. function get_peizi_next_date($time= NOW_TIME ,$left = 0){
  586. $date = to_date($time,"Y-m-d");
  587. switch($left){
  588. case 0://当天
  589. return $date;
  590. break;
  591. case 1://次日生效
  592. $cur_date = dec_date($date, -1);
  593. return $cur_date;
  594. break;
  595. case 2://下一交易日
  596. for($i = 1; $i < 30; $i ++){
  597. $cur_date = dec_date($date, -$i);
  598. if (get_peizi_is_holiday($cur_date) == false){
  599. return $cur_date;
  600. }
  601. }
  602. break;
  603. case 3://下二个交易日
  604. for($i = 1; $i < 30; $i ++){
  605. $i ++;
  606. $cur_date = dec_date($date, -$i);
  607. if (get_peizi_is_holiday($cur_date) == false){
  608. return $cur_date;
  609. }
  610. }
  611. break;
  612. default :
  613. return null;
  614. break;
  615. }
  616. }
  617. /**
  618. * 判断是否交易日
  619. * @param unknown_type $date
  620. */
  621. function get_peizi_is_holiday($date){
  622. //判断是否是:周末
  623. $w = to_date(to_timespan($date,"Y-m-d"),'w');
  624. //echo $w;exit;
  625. if ($w == 0 || $w == 6){
  626. return true;
  627. }
  628. //判断是否为节假日
  629. $sql = "select id from ".DB_PREFIX."licai_holiday where holiday = '".$date."'";
  630. if (intval($GLOBALS['db']->getOne($sql)) > 0){
  631. return true;
  632. }else{
  633. return false;
  634. }
  635. }
  636. function next_month($time,$m=1){
  637. $str_t = to_timespan(to_date($time)." ".$m." month ");
  638. //$str_t = to_timespan(to_date($time)." ".$m." month -1 day");
  639. return $str_t;
  640. }
  641. /*
  642. * $redempte_id 申请ID
  643. * $status 0表示未审核 1表示已审核 2表示审核不通过 3表示取消赎回
  644. * $earn_money 审核收益
  645. * $fee 赎回手续费
  646. * $organiser_fee 平台收益
  647. * $pay_type 0 表示不允许垫付 1表示允许垫付
  648. * $web_type 0表示前台撤销 1表示后台审核赎回 2表示前台审核赎回
  649. */
  650. function deal_redempte($redempte_id,$status,$earn_money,$fee=0,$organiser_fee=0,$pay_type=0,$web_type=0){
  651. require_once(APP_ROOT_PATH.'system/libs/user.php');
  652. $info=array('status'=>1,'info'=>'');
  653. $licai=array();
  654. if($web_type==1||$web_type==2){
  655. $redempte=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_redempte where id=$redempte_id");
  656. if($redempte['status']==0){
  657. if($status==1){
  658. //审核通过
  659. if(true){
  660. //最终的金额
  661. $money=$redempte['money']+$organiser_fee+$earn_money;
  662. $order=$GLOBALS['db']->getRow("select dorder.money,dorder.site_buy_fee,dorder.redempte_money,dorder.user_id as consumer_id,d.user_id as organiser_id,d.name as licai_name,d.id as licai_id,d.service_fee_rate from ".DB_PREFIX."licai_order as dorder left join ".DB_PREFIX."licai as d on dorder.licai_id=d.id where dorder.id=".$redempte['order_id']);
  663. if($redempte['money']>($order['money']-$order['redempte_money'])){
  664. $info['status']=0;
  665. $info['info']='您赎回的金额超过了您购买的金额(您的购买金额是'.$order['money'].',已赎回'.$order['redempte_money'].")";
  666. return $info;
  667. }
  668. /*if($order['service_fee_rate']>0){
  669. $organiser_fee=$redempte['money']*$order['service_fee_rate'];
  670. }else{
  671. $organiser_fee=0;
  672. }*/
  673. //$money=$redempte['money']+$organiser_fee+$earn_money;
  674. $licai['url'] = url("licai#deal",array("id"=>$order['licai_id']));
  675. $licai['name']=$order['licai_name'];
  676. //对发起人进行扣款操作,有冻结金额mortgage_money 先用冻结金额,没有再用余额money,如果余额也不够,就生成垫付单
  677. if($order['consumer_id']&&$order['organiser_id']){
  678. $organiser_user=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."user where id=".$order['organiser_id']);
  679. require_once APP_ROOT_PATH.'system/libs/user.php';
  680. //$organiser_user = get_user_info("*",$order['organiser_id']);
  681. if($organiser_user['money']>=$money){
  682. //modify_account(array('money'=>'-'.$money,'ben_money'=>'-'.$redempte['money'],'earn_money'=>'-'.$earn_money,'organiser_fee'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”",39);
  683. //赎回本金
  684. modify_account(array('money'=>'-'.$redempte['money']),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>42));//42理财购买本金 43理财购买手续费 44理财冻结资金 45理财服务费 46理财发放资金
  685. //收益
  686. modify_account(array('money'=>'-'.$earn_money),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>46));
  687. //平台手续费
  688. modify_account(array('money'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的平台收益",array('type'=>43));
  689. //if(!$re){
  690. /* $info['status']=0;
  691. $info['info']='资金修改错误';
  692. return $info;
  693. */
  694. //}
  695. }elseif($organiser_user['mortgage_money']>=$money){
  696. //赎回本金
  697. modify_account(array('mortgage_money'=>'-'.$redempte['money']),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>44));
  698. //赎回手续费
  699. modify_account(array('mortgage_money'=>'-'.$earn_money),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>44));
  700. //赎回平台手续费
  701. modify_account(array('mortgage_money'=>'-'.$organiser_fee),$order['organiser_id'],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的平台收益",array('type'=>44));
  702. //if(!$re){
  703. /* $info['status']=0;
  704. $info['info']='资金修改错误';
  705. return $info;*/
  706. //}
  707. }/*elseif(($organiser_user['money']+$organiser_user['mortgage_money'])>=$money){
  708. $ye_money=$money-$organiser_user['mortgage_money'];
  709. //赎回本金
  710. modify_account(array('money'=>'-'.$redempte['money']),$order["organiser_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>42));
  711. //赎回收益
  712. modify_account(array('money'=>'-'.$earn_money),$order["organiser_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>46));
  713. //平台手续费
  714. modify_account(array('money'=>'-'.$organiser_fee),$order["organiser_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的手续费",array('type'=>43));
  715. }*/else{
  716. if($pay_type==1){
  717. //生成垫付单
  718. $re=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_advance where redempte_id=".$redempte_id);
  719. if($re){
  720. $info['status']=0;
  721. $info['info']='发起人已经生成垫付单';
  722. return $info;
  723. }else{
  724. $advance['redempte_id']=$redempte_id;
  725. $advance['user_id']=$organiser_user['id'];
  726. $advance['user_name']=$organiser_user['user_name'];
  727. $advance['money']=$redempte['money'];
  728. $advance['earn_money']=$earn_money;
  729. $advance['fee']=$fee;
  730. $advance['organiser_fee']=$organiser_fee;
  731. $advance['real_money']=$organiser_user['money']+$organiser_user['mortgage_money'];
  732. $advance['advance_money']=$redempte['money']+$advance['earn_money']+$advance['organiser_fee']-$advance['real_money'];
  733. $advance['status']=1;
  734. $advance['type']=$redempte['type'];
  735. $advance['create_date']=to_date(NOW_TIME);
  736. $advance['update_date']=to_date(NOW_TIME);
  737. $re=$GLOBALS['db']->autoExecute(DB_PREFIX."licai_advance",$advance);
  738. if(!$re){
  739. $info['status']=0;
  740. $info['info']='发起人生成垫付单错误';
  741. return $info;
  742. }else{
  743. $results = array('redempte_money'=>0,'earn_money'=>0,'organiser_fee'=>0);
  744. if($organiser_user['mortgage_money']){
  745. //赎回本金
  746. if($results['redempte_money'] == 0&&$organiser_user['mortgage_money']>$redempte['money']){
  747. if(modify_account(array('mortgage_money'=>'-'.$redempte['money']),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>44))){
  748. $results['redempte_money'] = 1;
  749. }
  750. }
  751. //赎回收益
  752. if($results['earn_money'] == 0&&$organiser_user['mortgage_money']>$earn_money){
  753. if(modify_account(array('mortgage_money'=>'-'.$earn_money),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>44))){
  754. $results['earn_money'] = 1;
  755. }
  756. }
  757. //平台收益
  758. if($results['organiser_fee'] == 0&&$organiser_user['mortgage_money']>$organiser_fee){
  759. if(modify_account(array('mortgage_money'=>'-'.$organiser_fee),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的平台收益",array('type'=>44))){
  760. $results['organiser_fee'] = 1;
  761. }
  762. }
  763. //生成垫付单前扣除冻结金
  764. $yue1 = $GLOBALS['db']->getOne("select mortgage_money from ".DB_PREFIX."user where id=".$GLOBALS["user_info"]["id"]);
  765. modify_account(array('mortgage_money'=>'-'.$yue1),$advance["user_id"],"生成垫付单扣除冻结金",array('type'=>44));
  766. }
  767. if($organiser_user['money']){
  768. //赎回本金
  769. if($results['redempte_money'] == 0&&$organiser_user['money']>$redempte['money']){
  770. if(modify_account(array('money'=>'-'.$redempte['money']),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>42))){
  771. $results['redempte_money'] = 1;
  772. }
  773. }
  774. //赎回收益
  775. if($results['earn_money'] == 0&&$organiser_user['money']>$earn_money){
  776. if(modify_account(array('money'=>'-'.$earn_money),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>46))){
  777. $results['earn_money'] = 1;
  778. }
  779. }
  780. //平台收益
  781. if($results['organiser_fee'] == 0&&$organiser_user['money']>$organiser_fee){
  782. if(modify_account(array('money'=>'-'.$organiser_fee),$advance["user_id"],"发放用户要赎回的理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的平台收益",array('type'=>43))){
  783. $results['organiser_fee'] = 1;
  784. }
  785. }
  786. //生成垫付单前扣除余额
  787. $yue2 = $GLOBALS['db']->getOne("select money from ".DB_PREFIX."user where id=".$GLOBALS["user_info"]["id"]);
  788. modify_account(array('money'=>'-'.$yue2),$advance["user_id"],"生成垫付单扣除余额",array('type'=>47));
  789. }
  790. }
  791. }
  792. }else{
  793. $info['status']=2;
  794. if($web_type==1){
  795. $info['info']='用户账户资金不足,是否要帮用户垫付';
  796. }elseif($web_type==2){
  797. $licai_pay_type = $GLOBALS["db"]->getRow("select lc.pay_type from ".DB_PREFIX."licai as lc" .
  798. " left join ".DB_PREFIX."licai_order as lco on lc.id = lco.licai_id " .
  799. " left join ".DB_PREFIX."licai_redempte as lcr on lco.id = lcr.order_id " .
  800. " where lcr.id=".$redempte_id." and lc.user_id = ".$GLOBALS["user_info"]["id"]);
  801. if($licai_pay_type['pay_type'] ==1){
  802. $info['status']=2;
  803. $info['info']='账户资金不足,是否需要系统垫付';
  804. return $info;
  805. }else{
  806. $info['status']=0;
  807. $info['lack'] = 1;
  808. $info['info']='您的账户资金不足,请充值';
  809. }
  810. }
  811. return $info;
  812. }
  813. }
  814. //修改赎回状态
  815. $re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status,earn_money=".$earn_money.",fee=".$fee.",update_date = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where id=$redempte_id ");
  816. //修改订单状态
  817. if($redempte['money']<($order['money']-$order["site_buy_fee"]-$order['redempte_money'])){
  818. //部分赎回
  819. $set=" ,status=2 ";
  820. }else{
  821. //全部赎回
  822. $set=" ,status=3 ";
  823. $over = 1;
  824. }
  825. $re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_order set redempte_money=redempte_money+".$redempte['money'].$set." ,status_time = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where id=".$redempte['order_id']);
  826. //为投资人 进行金额的增加
  827. $comuse_money=$redempte['money']+$earn_money-$fee;
  828. //赎回本金
  829. modify_account(array('money'=>$redempte['money']),$order['consumer_id'],"赎回理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的本金",array('type'=>42));
  830. //赎回收益
  831. modify_account(array('money'=>$earn_money),$order['consumer_id'],"赎回理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的收益",array('type'=>46));
  832. //赎回手续费
  833. modify_account(array('money'=>'-'.$fee),$order['consumer_id'],"赎回理财产品“<a href=\"".$licai['url']."\">".$licai['name']."</a>”的手续费",array('type'=>43));
  834. if($over == 1)
  835. {
  836. $GLOBALS["db"]->query("update ".DB_PREFIX."licai_redempte set status=2,update_date = '".to_date(NOW_TIME,"Y-m-d H:i:s")."' where order_id = ".$redempte['order_id']." and status = 0 and user_id =".$order["consumer_id"]);
  837. }
  838. /* if(!$re){
  839. $info['status']=0;
  840. $info['info']='用户收款错误';
  841. return $info;
  842. }*/
  843. }else{
  844. $info['status']=0;
  845. $info['info']='操作失败,请重新提交';
  846. return $info;
  847. }
  848. }else{
  849. $info['status']=0;
  850. $info['info']='操作失败,请重新撤销';
  851. return $info;
  852. }
  853. }elseif($status==2){
  854. //审核不通过
  855. $re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status where id=$redempte_id ");
  856. if($re){
  857. $info['info']='操作成功';
  858. return $info;
  859. }else{
  860. $info['status']=0;
  861. $info['info']='操作失败,请重新撤销';
  862. return $info;
  863. }
  864. }
  865. }
  866. }elseif($web_type==0){
  867. $user_id=$GLOBALS['user_info']['id'];
  868. if(!$user_id){
  869. $info['status']=0;
  870. $info['info']='请登录';
  871. return $info;
  872. }
  873. if($status==3){
  874. $redempte=$GLOBALS['db']->getRow("select * from ".DB_PREFIX."licai_redempte where id=$redempte_id");
  875. if($redempte['user_id']==$user_id){
  876. $re=$GLOBALS['db']->query("update ".DB_PREFIX."licai_redempte set status=$status where id=$redempte_id and user_id=$user_id ");
  877. if($re){
  878. $info['info']='操作成功';
  879. return $info;
  880. }else{
  881. $info['status']=0;
  882. $info['info']='操作失败,请重新撤销';
  883. return $info;
  884. }
  885. }else{
  886. $info['status']=0;
  887. $info['info']='您没有权限撤销';
  888. return $info;
  889. }
  890. }
  891. }
  892. return $info;
  893. }
  894. /*
  895. * 生成赎回订单
  896. * $user_id 申请人ID
  897. * $order_id 订单ID
  898. * $money 申请赎回金额
  899. */
  900. function create_redempte($user_id,$order_id,$money){
  901. $info=array('status'=>1,'info'=>'');
  902. if($money<=0){
  903. $info['status']=0;
  904. $info['info']='请输入有效金额';
  905. return $info;
  906. }
  907. if(!$GLOBALS['user_info']){
  908. $info['status']=0;
  909. $info['info']='请先登录';
  910. return $info;
  911. }
  912. if($GLOBALS['user_info']['id']!=$user_id){
  913. $info['status']=0;
  914. $info['info']='您没有权限';
  915. return $info;
  916. }
  917. $order=$GLOBALS['db']->getRow("select dorder.before_interest_date,dorder.before_interest_enddate,dorder.begin_interest_date as begin_order,dorder.end_interest_date, dorder.user_id as consumer_id,d.user_id as organiser_id,d.name as licai_name,d.id as licai_id,d.service_fee_rate,d.begin_buy_date,d.begin_interest_date,d.end_buy_date,d.end_date,d.time_limit,d.type from ".DB_PREFIX."licai_order as dorder left join ".DB_PREFIX."licai as d on dorder.licai_id=d.id where dorder.id=".$order_id." and dorder.user_id=".$user_id);
  918. if($order){
  919. if($order["type"]>0)
  920. {
  921. $licai_interest=get_licai_interest($order['licai_id'],$money);
  922. }
  923. else
  924. {
  925. if( to_timespan($order["end_interest_date"]) > NOW_TIME)
  926. {
  927. $licai_interest= get_licai_interest_yeb($order['licai_id'],$order['begin_order'],to_date(NOW_TIME,'Y-m-d'));
  928. }
  929. else
  930. {
  931. $licai_interest= get_licai_interest_yeb($order['licai_id'],$order['begin_order'],$order['end_interest_date']);
  932. }
  933. }
  934. $redempte['order_id']=$order_id;
  935. $redempte['user_id']=$user_id;
  936. $redempte['user_name']=$GLOBALS['user_info']['user_name'];
  937. $redempte['money']=$money;
  938. // $redempte['earn_money']=$earn_money;
  939. // $redempte['fee']=$fee;
  940. // $redempte['organiser_fee']=$organiser_fee;
  941. $now=get_gmtime();
  942. $limit_time=$order['time_limit']*30*24*3600;
  943. $order['before_interest_date']=to_timespan($order['before_interest_date']);
  944. $order['before_interest_enddate']=to_timespan($order['before_interest_enddate']);
  945. $order['begin_interest_date']=$order['begin_order'];
  946. $order['begin_interest_date']=to_timespan($order['begin_interest_date']);
  947. $order['end_interest_date']=to_timespan($order['end_interest_date']);
  948. if($order["type"]>0)
  949. {
  950. if($order['before_interest_date']<$now&&$order['before_interest_enddate']>$now){
  951. //小于起息时间,就是预热期就赎回
  952. $redempte['type']=0;
  953. $day=intval(($now-$order['before_interest_date'])/24/3600);
  954. if($day<=0){
  955. $day=0;
  956. }
  957. $redempte['earn_money']=$money*$day*$licai_interest['before_breach_rate']*0.01/365;
  958. $redempte['fee']=$money*$day*$licai_interest['redemption_fee_rate']*0.01/365;
  959. $redempte['organiser_fee']=$money*$day*$licai_interest['platform_breach_rate']*0.01/365;
  960. }elseif($order['before_interest_enddate']<=$now&&$order['begin_interest_date']>$now){
  961. //完成预期期间,未进入正式起息时间
  962. $redempte['type']=1;
  963. $day=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
  964. if($day<=0){
  965. $day=0;
  966. }
  967. $redempte['earn_money']=$money*$day*$licai_interest['before_rate']*0.01/365;
  968. $redempte['fee']=$money*$day*$licai_interest['redemption_fee_rate']*0.01/365;
  969. $redempte['organiser_fee']=$money*$day*$licai_interest['platform_breach_rate']*0.01/365;
  970. }elseif($order['begin_interest_date']<=$now&&$order['end_interest_date']>$now){
  971. //进入正式起息时间,违约
  972. $redempte['type']=1;
  973. $day_before=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
  974. if($day_before<=0){
  975. $day_before=0;
  976. }
  977. $before_earn_money=$money*$day_before*$licai_interest['before_rate']*0.01/365;
  978. $day_begin=intval(($now-$order['begin_interest_date'])/24/3600);
  979. if($day_begin<=0){
  980. $day_begin=0;
  981. if($order['begin_interest_date']!=$order['before_interest_enddate']){
  982. $redempte['type']=1;
  983. }else{
  984. $redempte['type']=3;
  985. }
  986. }
  987. $begin_earn_money=$money*$day_begin*$licai_interest['breach_rate']*0.01/365;
  988. $redempte['earn_money']=$before_earn_money+$begin_earn_money;
  989. $redempte['fee']=$money*($day_before+$day_begin)*$licai_interest['redemption_fee_rate']*0.01/365;
  990. $redempte['organiser_fee']=$money*($day_before+$day_begin)*$licai_interest['platform_breach_rate']*0.01/365;
  991. }elseif($order['end_interest_date']<=$now){
  992. $redempte['type']=2;
  993. $day_before=intval(($order['before_interest_enddate']-$order['before_interest_date'])/24/3600);
  994. $before_earn_money=$money*$day_before*$licai_interest['before_rate']*0.01/365;
  995. $day_begin=intval(($order['end_interest_date']-$order['begin_interest_date'])/24/3600);
  996. $begin_earn_money=$money*$day_begin*$licai_interest['interest_rate']*0.01/365;
  997. $redempte['earn_money']=$before_earn_money+$begin_earn_money;
  998. $redempte['fee']=$money*($day_before+$day_begin)*$licai_interest['redemption_fee_rate']*0.01/365;
  999. $redempte['organiser_fee']=$money*($day_before+$day_begin)*$licai_interest['platform_rate']*0.01/365;
  1000. }
  1001. }
  1002. else
  1003. {
  1004. $order_data['platform_rate'] = $licai_interest['platform_rate'];
  1005. $order_data['service_fee_rate'] = $licai_interest['service_fee_rate'];
  1006. $order_data['redemption_fee_rate'] = $licai_interest['redemption_fee_rate'];
  1007. if($order['end_interest_date'] < NOW_TIME)
  1008. {
  1009. $redempte['type']=2;
  1010. $days = intval(($order['end_interest_date']-$order['begin_interest_date'])/24/3600);
  1011. }
  1012. else
  1013. {
  1014. $redempte['type']=1;
  1015. $days = intval((NOW_TIME-$order['begin_interest_date'])/24/3600);
  1016. }
  1017. if($days<0)
  1018. {
  1019. $days = 0;
  1020. }
  1021. $redempte['earn_money']=$money*$licai_interest["interest_rate"]/365/100;
  1022. $redempte['fee']=$money*$days*$order_data['redemption_fee_rate']*0.01/365;
  1023. $redempte['organiser_fee']=$money*$days*$order_data['platform_rate']*0.01/365;
  1024. }
  1025. $redempte['status']=0;
  1026. $redempte['create_date']=to_date(NOW_TIME);
  1027. $redempte['update_date']=to_date(NOW_TIME);
  1028. $re=$GLOBALS['db']->autoExecute(DB_PREFIX."licai_redempte",$redempte);
  1029. if($re){
  1030. $info['info']='申请成功';
  1031. return $info;
  1032. }else{
  1033. $info['status']=0;
  1034. $info['info']='操作失败,请重新提交';
  1035. return $info;
  1036. }
  1037. }else{
  1038. $info['status']=0;
  1039. $info['info']='您的订单不存在';
  1040. return $info;
  1041. }
  1042. }
  1043. function interest_item_format($vo)
  1044. {
  1045. $vo["min_money_format"] = format_price($vo["min_money"]);
  1046. $vo["max_money_format"] = format_price($vo["max_money"]);
  1047. $vo["interest_rate_format"] = number_format($vo["interest_rate"],4)."%";
  1048. $vo["buy_fee_rate_format"] = number_format($vo["buy_fee_rate"],4)."%";
  1049. $vo["site_buy_fee_rate_format"] = number_format($vo["site_buy_fee_rate"],4)."%";
  1050. $vo["redemption_fee_rate_format"] = number_format($vo["redemption_fee_rate"],4)."%";
  1051. $vo["before_rate_format"] = number_format($vo["before_rate"],4)."%";
  1052. $vo["before_breach_rate_format"] = number_format($vo["before_breach_rate"],4)."%";
  1053. $vo["breach_rate_format"] = number_format($vo["breach_rate"],4)."%";
  1054. $vo["platform_rate_format"] = number_format($vo["platform_rate"],4)."%";
  1055. $vo["freeze_bond_rate_format"] = number_format($vo["freeze_bond_rate"],4)."%";
  1056. $vo["platform_breach_rate_format"] = number_format($vo["platform_breach_rate"],4)."%";
  1057. return $vo;
  1058. }
  1059. function get_licai_status($id)
  1060. {
  1061. $vo = $GLOBALS["db"]->getRow("select * from ".DB_PREFIX."licai where id =".$id);
  1062. if(!$vo)
  1063. {
  1064. return "";
  1065. }
  1066. $time = get_peizi_next_date(to_timespan($vo["begin_interest_date"]),$vo['begin_buy_date']);
  1067. if(NOW_TIME < to_timespan($time))
  1068. {
  1069. $status = 0;
  1070. }
  1071. elseif(($vo["end_date"] =="" || $vo["end_date"] = "0000-00-00" || NOW_TIME <= to_timespan($vo["end_date"]) && NOW_TIME >= to_timespan($time)))
  1072. {
  1073. $status = 1;
  1074. }
  1075. elseif(NOW_TIME > to_timespan($vo["end_date"]))
  1076. {
  1077. $status = 3;
  1078. }
  1079. return $status;
  1080. }
  1081. function format_money_wan($money)
  1082. {
  1083. return ($money/10000)."万元";
  1084. }
  1085. ?>