ThirdXz.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. <?php
  2. namespace app\api\controller\v1;
  3. use app\api\services\RequestUtilService;
  4. use app\api\services\UserServices;
  5. use app\common\model\ThirdxzDforderModel;
  6. use app\common\model\ThirdxzHforderModel;
  7. use app\common\model\YgOrderModel;
  8. use app\Request;
  9. use think\cache\driver\Redis;
  10. use think\Exception;
  11. use think\facade\Db;
  12. //星钻兑换
  13. class ThirdXz
  14. {
  15. protected $model = null;
  16. protected $model1 = null;
  17. public function __construct( ThirdxzHforderModel $model, ThirdxzDforderModel $model1)
  18. {
  19. $this->model = $model;
  20. $this->model1 = $model1;
  21. }
  22. public function productList(Request $request){
  23. $params = [
  24. 'mchId'=>env('XZTHIRD.PINWEI_MCHID'),
  25. 'datetime'=>date('Ymdhis', time())
  26. ];
  27. $params['sign'] = createApiSigncreatePwApiSign($params);
  28. sr_log('body'.json_encode($params));
  29. // 话费充值产品列表
  30. // $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/huafei/product_list', $params, 'post');
  31. $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/dianfei/product_list', $params, 'post');
  32. // $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/dianfei/get_area', $params, 'post');
  33. //
  34. // sr_log(sr_getcurtime(time()).'aaa'.$res);
  35. // {"code":200,"msg":"success","content":{"order_no":"DLB1649853909589099089998901OP","external_order_no":"12365847092204130845091649853909","total_amount":11970,"body":"\u8d2d\u4e70\u5546\u54c1","trans_type":"AL_JSAPP","JSAPPID":"2021002148663267","url":"alipays:\/\/platformapi\/startapp?appId=2021002148663267&page=pages\/open-pay\/open-pay&query=order_no%3DDLB1649853909589099089998901OP","sign":"FA06F884C143DA40E505950918D4AD45"}}
  36. $result = json_decode($res, true);
  37. foreach ($result['datas'] as $key=>$val){
  38. // $is_dx = strpos($val['operator'], 'dx');
  39. // $is_yd = strpos($val['operator'], 'yd');
  40. // $is_lt = strpos($val['operator'], 'lt');
  41. Db::name('third_xzgoods')->insert([
  42. 'prodoct_id'=>$val['product_id'],
  43. 'type'=>2,
  44. 'cz_type'=>$val['cz_type'],
  45. 'state'=>1,
  46. 'create_time'=>sr_getcurtime(time()),
  47. 'update_time'=>sr_getcurtime(time()),
  48. 'details'=>$val['details'],
  49. 'sale_price'=>$val['sale_price'],
  50. 'base_price'=>$val['base_price'],
  51. 'spec'=>$val['spec'],
  52. 'pro_name'=>$val['pro_name']
  53. ]);
  54. }
  55. return $res;
  56. }
  57. // 话费充值列表
  58. public function xzHflist(Request $request){
  59. $lists = Db::name('third_xzgoods')->where('type', 1)->where('state', 1)->where('cz_type', 1)->field('spec as sale_price,prodoct_id,s_type')->order('prodoct_id asc')->select()->toArray();
  60. $yd_arr = [];
  61. $lt_arr = [];
  62. $dx_arr = [];
  63. $cur_xzmoney = Db::name('system_config')->where('name', 'xz_cur_money')->where('group', 'xzconfig')->value('value');
  64. foreach ($lists as $key=>$val){
  65. $xz_money = getXzPirceWithPrice($cur_xzmoney, $val['sale_price']);
  66. $val['coupon_num'] = $val['sale_price']/10;
  67. $val['xz_money'] = $xz_money;
  68. $val['sub_title']= str_replace('.00', '', $val['sale_price']).'元话费';
  69. if ($val['s_type'] == 1){
  70. array_push($yd_arr, $val);
  71. }
  72. if ($val['s_type'] == 2){
  73. array_push($lt_arr, $val);
  74. }
  75. if ($val['s_type'] == 3){
  76. array_push($dx_arr, $val);
  77. }
  78. }
  79. $result = [
  80. [
  81. 'title'=>'移动',
  82. 'tag'=>'yg',
  83. 'type'=>1,
  84. 'goods'=>$yd_arr
  85. ],
  86. [
  87. 'title'=>'联通',
  88. 'tag'=>'lt',
  89. 'type'=>2,
  90. 'goods'=>$lt_arr
  91. ],
  92. [
  93. 'title'=>'电信',
  94. 'tag'=>'dx',
  95. 'type'=>3,
  96. 'goods'=>$dx_arr
  97. ],
  98. ];
  99. return api_succ_return(['msg'=>'成功', 'data'=>$result]);
  100. }
  101. // 星钻兑换话费
  102. public function xzExchargeHf(Request $request){
  103. // if ($request->uid != 7493487){
  104. // return api_error_return('为了用户更好的体验。星钻话费兑换需要技术维护更新,具体开放时间另行通知!');
  105. // }
  106. return api_error_return('正在维护中');
  107. if (empty($request->post('sm_deviceid'))){
  108. return api_error_return('参数错误');
  109. }
  110. $post = $request->post();
  111. if (empty($post['prodoct_id']) || empty($post['type']) || empty($post['mobile'] || empty($post['security_pass']))){
  112. return api_error_return('参数错误');
  113. }
  114. if (!sr_isphone($post['mobile'])){
  115. return api_error_return('请检查手机号');
  116. }
  117. Db::startTrans();
  118. try {
  119. getActionBefore(4);
  120. getActionSecury($request->uid, $request->post('security_pass', ''));
  121. shumei_event('exchange', $request->uid, $request->post('sm_deviceid'));
  122. $this->model->hforderSubmit($request->uid, ['prodoct_id'=>$post['prodoct_id'], 'mobile'=>$post['mobile'], 'type'=>$post['type']]);
  123. Db::commit();
  124. }catch (\Exception $e){
  125. Db::rollback();
  126. return api_error_return($e->getMessage());
  127. }
  128. return api_succ_return('请求成功');
  129. }
  130. // 话费兑换列表
  131. public function xzExchargeRecord(Request $request){
  132. $limit = $request->post('limit', 10);
  133. $page = $request->post('page', 1);
  134. $res = Db::name('thirdxz_hforder')
  135. ->alias('o')
  136. ->leftJoin('third_xzgoods g', 'g.prodoct_id = o.prodoct_id')
  137. ->where('uid', $request->uid)
  138. ->field('o.*')
  139. ->order('o.create_time desc')
  140. ->page($page, $limit)
  141. ->select()->toArray();
  142. $status_key = [
  143. 1=>'充值中',
  144. 2=>'充值成功(72小时到账)',
  145. 3=>'充值失败'
  146. ];
  147. foreach ($res as $key=>$val){
  148. $res[$key]['status_title'] = $status_key[$val['status']];
  149. }
  150. return api_succ_return(['msg'=>'成功', 'data'=>$res]);
  151. }
  152. // 电费充值列表
  153. public function xzDflist(Request $request){
  154. $lists = Db::name('third_xzgoods')
  155. ->where('type', 2)
  156. ->where('state', 1)->where('cz_type', 1)->field('spec as sale_price,prodoct_id')->order('prodoct_id asc')->select()->toArray();
  157. $result = [];
  158. $cur_xzmoney = Db::name('system_config')->where('name', 'xz_cur_money')->where('group', 'xzconfig')->value('value');
  159. foreach ($lists as $key=>&$val){
  160. $xz_money = getXzPirceWithPrice($cur_xzmoney, $val['sale_price']);
  161. $val['coupon_num'] = $val['sale_price']/10;
  162. $val['xz_money'] = $xz_money;
  163. $val['sub_title']= str_replace('.00', '', $val['sale_price']).'元电费';
  164. array_push($result, $val);
  165. }
  166. return api_succ_return(['msg'=>'成功', 'data'=>$result]);
  167. }
  168. // 电费可充值列表
  169. public function dianfei_area(Request $request){
  170. $params = [
  171. 'mchId'=>env('XZTHIRD.PINWEI_MCHID'),
  172. 'datetime'=>date('Ymdhis', time())
  173. ];
  174. $redis = new Redis();
  175. // return api_succ_return('aa');
  176. $has = false;
  177. $apikey = 'dianfeiarea';
  178. if ($redis->has($apikey)){
  179. $list = $redis->get($apikey);
  180. return api_succ_return(['msg'=>'成功', 'data'=>$list]);
  181. }
  182. $params['sign'] = createApiSigncreatePwApiSign($params);
  183. // sr_log('body'.json_encode($params));
  184. // 话费充值产品列表
  185. // $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/huafei/product_list', $params, 'post');
  186. $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/dianfei/get_area', $params, 'post');
  187. // sr_log($res);
  188. // $res = _curlrequest(env('xzthird.PINWEI_API_URL').'/api/dianfei/get_area', $params, 'post');
  189. // {"code":200,"msg":"success","content":{"order_no":"DLB1649853909589099089998901OP","external_order_no":"12365847092204130845091649853909","total_amount":11970,"body":"\u8d2d\u4e70\u5546\u54c1","trans_type":"AL_JSAPP","JSAPPID":"2021002148663267","url":"alipays:\/\/platformapi\/startapp?appId=2021002148663267&page=pages\/open-pay\/open-pay&query=order_no%3DDLB1649853909589099089998901OP","sign":"FA06F884C143DA40E505950918D4AD45"}}
  190. $result = json_decode($res, true);
  191. $redis->set($apikey, $result['datas']);
  192. return api_succ_return(['msg'=>'成功', 'data'=>$result['datas']]);
  193. }
  194. // 电费充值提交
  195. public function xzExchargeDf(Request $request){
  196. return api_error_return('正在维护中');
  197. if (empty($request->post('sm_deviceid'))){
  198. return api_error_return('参数错误');
  199. }
  200. $post = $request->post();
  201. if (empty($post['prodoct_id']) || empty($post['account']) || empty($post['address'] || empty($post['security_pass']) || empty($post['mobile']))){
  202. return api_error_return('参数错误');
  203. }
  204. Db::startTrans();
  205. try {
  206. getActionBefore(5);
  207. getActionSecury($request->uid, $request->post('security_pass', ''));
  208. shumei_event('exchange', $request->uid, $request->post('sm_deviceid'));
  209. $this->model1->dforderSubmit($request->uid, ['prodoct_id'=>$post['prodoct_id'], 'account'=>$post['account'], 'address'=>$post['address'], 'mobile'=>$post['mobile']]);
  210. Db::commit();
  211. }catch (\Exception $e){
  212. Db::rollback();
  213. return api_error_return($e->getMessage());
  214. }
  215. return api_succ_return('请求成功');
  216. }
  217. // 电费充值订单列表
  218. public function xzdfExchargeRecord(Request $request){
  219. $limit = $request->post('limit', 10);
  220. $page = $request->post('page', 1);
  221. $res = Db::name('thirdxz_dforder')
  222. ->alias('o')
  223. ->leftJoin('third_xzgoods g', 'g.prodoct_id = o.prodoct_id')
  224. ->where('uid', $request->uid)
  225. ->field('o.*')
  226. ->page($page, $limit)
  227. ->order('o.create_time desc')
  228. ->select()->toArray();
  229. $status_key = [
  230. 1=>'充值中',
  231. 2=>'充值成功(72小时到账)',
  232. 3=>'充值失败'
  233. ];
  234. foreach ($res as $key=>$val){
  235. $res[$key]['status_title'] = $status_key[$val['status']];
  236. }
  237. return api_succ_return(['msg'=>'成功', 'data'=>$res]);
  238. }
  239. }