provider_group.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. <?php
  2. require_once(BASE_CONFIG_PATH . CONFIG_PREFIX . '/refill.ini.php');
  3. require_once(BASE_HELPER_PATH . '/mtopcard/mtopcard.php');
  4. require_once(BASE_HELPER_PATH . '/refill/RefillFactory.php');
  5. class provider_groupControl extends SystemControl
  6. {
  7. public function __construct()
  8. {
  9. parent::__construct();
  10. }
  11. public function indexOp()
  12. {
  13. $mod = Model('provider_group');
  14. $condition = [];
  15. if (trim($_GET['group_name']) != '') {
  16. $condition['group_name'] = ['like', '%' . $_GET['group_name'] . '%'];
  17. }
  18. $group_list = $mod->getGroupList($condition, 30, 'add_time desc');
  19. Tpl::output('group_list', $group_list);
  20. Tpl::output('page', $mod->showpage('2'));
  21. Tpl::showpage('provider.group.list');
  22. }
  23. public function addOp()
  24. {
  25. if (chksubmit()) {
  26. $obj_validate = new Validator();
  27. $obj_validate->validateparam = [
  28. ["input" => $_POST["group_name"], "require" => "true", "message" => '通道组名称不能为空'],
  29. ];
  30. $error = $obj_validate->validate();
  31. if ($error != '') {
  32. showMessage($error);
  33. } else {
  34. $mod = Model('provider_group');
  35. $insert['group_name'] = trim($_POST['group_name']);
  36. $insert['add_time'] = time();
  37. $result = $mod->addGroup($insert);
  38. if ($result) {
  39. showMessage('添加成功', 'index.php?act=provider_group&op=index');
  40. } else {
  41. showMessage('添加失败');
  42. }
  43. }
  44. }
  45. Tpl::showpage('provider.group.add');
  46. }
  47. public function editOp()
  48. {
  49. $group_id = $_GET['group_id'] ?? $_POST['group_id'];
  50. $mod = Model('provider_group');
  51. $group = $mod->getProviderGroup(['group_id' => $group_id]);
  52. if(empty($group)) {
  53. showMessage('通道组不存在');
  54. }
  55. if(chksubmit()) {
  56. $updata['group_name'] = trim($_POST['group_name']);
  57. $updata['bz'] = trim($_POST['bz']);
  58. $result = $mod->editGroup($group_id, $updata);
  59. if ($result) {
  60. showMessage('编辑成功', 'index.php?act=provider_group&op=index');
  61. } else {
  62. showMessage('编辑失败');
  63. }
  64. }else{
  65. Tpl::output('group', $group);
  66. Tpl::showpage('provider.group.edit');
  67. }
  68. }
  69. public function provider_chooseOp()
  70. {
  71. $group_id = $_GET['group_id']??$_POST['group_id'];
  72. $mod = Model('provider_group');
  73. $provider_group = $mod->getProviderGroup(['group_id' => $group_id]);
  74. if(empty($provider_group)) {
  75. showMessage('此通道组不存在');
  76. }
  77. if(chksubmit()) {
  78. $condition['group_id'] = $group_id;
  79. $condition['quality'] = $_POST['quality'];
  80. $condition['type'] = $_POST['type'];
  81. $is_only = $_POST['is_only']??0;
  82. $group_info = $mod->getGroupInfo($condition);
  83. if($group_info['is_only'] == $is_only) {
  84. showMessage('编辑成功');
  85. }
  86. $result = $mod->editGroupInfo($condition,['is_only' => $is_only]);
  87. if ($result) {
  88. showMessage('编辑成功');
  89. } else {
  90. showMessage('编辑失败');
  91. }
  92. } else {
  93. $group_info = $mod->getGroupInfos(['group_id' => $group_id]);
  94. $check = [];
  95. foreach ($group_info as $info) {
  96. if(!empty($info['info'])) {
  97. $check[] = "{$info['quality']}-{$info['type']}";
  98. }
  99. }
  100. Tpl::output('check', $check);
  101. Tpl::output('group', $provider_group);
  102. Tpl::showpage('provider.group');
  103. }
  104. }
  105. public function get_provider_group_infoOp(){
  106. $mod = Model('provider_group');
  107. $condition['group_id'] = $_GET['group_id'];
  108. $condition['quality'] = $_GET['quality'];
  109. $condition['type'] = $_GET['type'];
  110. $group_info = $mod->getGroupInfo($condition);
  111. $infos = explode(',', $group_info['info']);
  112. if(empty($group_info['info'])) {
  113. echo(json_encode([]));
  114. exit;
  115. }
  116. $provider_list = Model('')->table('refill_provider,store')
  117. ->field('refill_provider.provider_id,store.store_name')
  118. ->join('inner')
  119. ->on('store.store_id=refill_provider.store_id')
  120. ->limit(1000)
  121. ->select();
  122. foreach ($provider_list as $provider) {
  123. $providers[$provider['provider_id']] = $provider['store_name'];
  124. }
  125. $datas = [];
  126. foreach($infos as $info) {
  127. $info = explode('-', $info);
  128. $store_name = $providers[$info[4]];
  129. $card_type = $this->scard_type($info[2]);
  130. $datas[$info[3]][] = "{$store_name}-{$card_type}-{$info[3]}元";
  131. }
  132. ksort($datas);
  133. $result['data'] = $datas;
  134. $result['is_only'] = $group_info['is_only'];
  135. echo(json_encode($result));
  136. exit;
  137. }
  138. public function set_provider_group_infoOp()
  139. {
  140. $type = $_GET['type'] ?? $_POST['type'];
  141. if(!in_array($type, [1,2])) {
  142. showMessage('通道类型有误');
  143. }
  144. if (chksubmit()){
  145. $group_id = $_POST['group_id'];
  146. $quality = $_POST['quality'];
  147. $info = $_POST['info'];
  148. $is_only = $_POST['is_only'];
  149. $inserts['group_id'] = $group_id;
  150. $inserts['type'] = $type;
  151. $inserts['quality'] = $quality;
  152. if(!empty($info)) {
  153. $inserts['info'] = implode(',', $info);
  154. }else{
  155. $inserts['info'] = '';
  156. }
  157. $inserts['is_only'] = $is_only;
  158. try {
  159. $mod = Model('provider_group');
  160. $trans = new trans_wapper($mod, __METHOD__);
  161. //删除旧配置
  162. $mod->delGroupInfo(['group_id' => $group_id, 'type' => $type, 'quality' => $quality]);
  163. //更新新配置
  164. if (!empty($inserts)) {
  165. $mod->addGroupInfo($inserts);
  166. }
  167. $trans->commit();
  168. showMessage('操作成功', 'index.php?act=provider_group&op=index');
  169. } catch (Exception $e) {
  170. $trans->rollback();
  171. showMessage('操作失败', '');
  172. }
  173. }else{
  174. global $config;
  175. if($type == 1 ) {
  176. $amounts = $config['refill_oil_specs'];
  177. $operator = [mtopcard\PetroChinaCard, mtopcard\SinopecCard];
  178. }else{
  179. $amounts = $config['refill_phone_specs'];
  180. $operator = [mtopcard\ChinaMobileCard, mtopcard\ChinaUnicomCard, mtopcard\ChinaTelecomCard];
  181. }
  182. $quality = $_GET['quality'] ?? 1;
  183. $providers = Model('')->table('refill_provider,store')
  184. ->field('refill_provider.provider_id,refill_provider.name,store.store_name,opened')
  185. ->join('inner')
  186. ->on('store.store_id=refill_provider.store_id')
  187. ->where(['type' => $type, 'qualitys' => ['like', '%' . $quality . '%']])
  188. ->limit(1000)
  189. ->order('opened asc , provider_id desc')
  190. ->select();
  191. if(empty($providers)) {
  192. showMessage('暂无相关通道可配置', '');
  193. }
  194. $results = [];
  195. foreach ($operator as $opr) {
  196. foreach ($providers as $key => $provider) {
  197. $data['provider_id'] = $provider['provider_id'];
  198. $data['provider_name'] = $provider['name'];
  199. $data['opened'] = $provider['opened'];
  200. $data['card_type'] = $opr;
  201. $card_type = $this->scard_type($opr);
  202. $data['name'] = "{$card_type}-{$provider['store_name']}";
  203. $results[] = $data;
  204. }
  205. }
  206. $mod = Model('provider_group');
  207. $condition['group_id'] = $_GET['group_id'];
  208. $condition['quality'] = $quality;
  209. $condition['type'] = $type;
  210. $group_info = $mod->getGroupInfo($condition);
  211. $sel_data = [];
  212. if(!empty($group_info)) {
  213. $infos = explode(',', $group_info['info']);
  214. foreach($infos as $info) {
  215. $info = explode('-', $info);
  216. $sel_data[] = "{$info[0]}-{$info[1]}-{$info[2]}-{$info[3]}-{$info[4]}";
  217. }
  218. }
  219. $ProviderManager = new \refill\ProviderManager();
  220. $ProviderManager->load();
  221. $QPTA = $ProviderManager->getQPTA();
  222. $QPTA = $QPTA[$quality];
  223. Tpl::output('QPTA', $QPTA);
  224. Tpl::output('is_only', $group_info['is_only']);
  225. Tpl::output('sel_data', $sel_data);
  226. Tpl::output('providers', $results);
  227. Tpl::output('amounts', $amounts);
  228. Tpl::showpage('provider.group.set');
  229. }
  230. }
  231. public function merchant_sel_groupOp()
  232. {
  233. $mchid = $_GET['mchid'] ?? $_POST['mchid'];
  234. $model_merchant = Model('merchant');
  235. $merchant = $model_merchant->getMerchantInfo(['mchid' => $mchid]);
  236. if (empty($merchant)) {
  237. showMessage('机构信息有误');
  238. }
  239. if (chksubmit()){
  240. $sel = $_POST['sel'];
  241. if(empty($sel)) {
  242. $update['group_ids'] = '';
  243. }else{
  244. $sel = implode(',', $sel);
  245. $update['group_ids'] = $sel;
  246. }
  247. $result = $model_merchant->editMerchant($update, ['mchid' => $mchid]);
  248. if ($result) {
  249. showMessage('编辑成功', 'index.php?act=merchant&op=merchant');
  250. }else{
  251. showMessage('编辑失败', 'index.php?act=merchant&op=merchant');
  252. }
  253. } else {
  254. $group_mod = Model('provider_group');
  255. $group_list = $group_mod->getGroupList(['group_id' => ['gt', 0]], 30, 'add_time desc');
  256. if(empty($group_list)) {
  257. showMessage('暂无可用通道组,请先添加。','index.php?act=provider_group&op=index');
  258. }
  259. $group_ids = explode(',', $merchant['group_ids']);
  260. Tpl::output('group_ids', $group_ids);
  261. Tpl::output('merchant', $merchant);
  262. Tpl::output('group_list', $group_list);
  263. Tpl::showpage('merchant.sel.group');
  264. }
  265. }
  266. }