ConfigOthers.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. namespace app\controller\admin\system\config;
  3. use app\common\repositories\system\merchant\MerchantRepository;
  4. use app\common\repositories\user\UserRepository;
  5. use ln\jobs\ChangeMerchantStatusJob;
  6. use think\App;
  7. use ln\basic\BaseController;
  8. use app\common\repositories\system\config\ConfigClassifyRepository;
  9. use app\common\repositories\system\config\ConfigRepository as repository;
  10. use app\common\repositories\system\config\ConfigValueRepository;
  11. use think\facade\Db;
  12. use think\facade\Queue;
  13. class ConfigOthers extends BaseController
  14. {
  15. public $repository;
  16. public function __construct(App $app, repository $repository)
  17. {
  18. parent::__construct($app);
  19. $this->repository = $repository;
  20. }
  21. public function lst()
  22. {
  23. $data = [
  24. 'extension_status' => systemConfig('extension_status'),
  25. 'extension_self' => systemConfig('extension_self'),
  26. 'extension_limit' => systemConfig('extension_limit'),
  27. 'extension_limit_day' => systemConfig('extension_limit_day'),
  28. 'extension_one_rate' => bcmul(systemConfig('extension_one_rate'), 100, 3),
  29. 'extension_two_rate' => bcmul(systemConfig('extension_two_rate'), 100, 3),
  30. 'sys_extension_type' => systemConfig('sys_extension_type'),
  31. ];
  32. return app('json')->success($data);
  33. }
  34. public function update()
  35. {
  36. $data = $this->request->params(['extension_status', 'extension_two_rate', 'extension_one_rate', 'extension_self', 'extension_limit', 'extension_limit_day', 'sys_extension_type']);
  37. if ($data['extension_two_rate'] < 0 || $data['extension_one_rate'] < 0) return app('json')->fail('比例不能小于0');
  38. if (bccomp($data['extension_one_rate'], $data['extension_two_rate'], 4) == -1)
  39. return app('json')->fail('一级比例不能小于二级比例');
  40. if (bccomp(bcadd($data['extension_one_rate'], $data['extension_two_rate'], 3), 100, 3) == 1)
  41. return app('json')->fail('比例之和不能超过100%');
  42. if (!ctype_digit((string)$data['extension_limit_day']) || $data['extension_limit_day'] <= 0) {
  43. return app('json')->fail('分销绑定时间必须大于0');
  44. }
  45. $arr['extension_status'] = $data['extension_status'];
  46. $arr['extension_self'] = $data['extension_self'];
  47. $arr['extension_limit'] = $data['extension_limit'];
  48. $arr['extension_limit_day'] = $data['extension_limit_day'];
  49. $arr['extension_one_rate'] = bcdiv($data['extension_one_rate'], 100, 3);
  50. $arr['extension_two_rate'] = bcdiv($data['extension_two_rate'], 100, 3);
  51. $old = systemConfig(['extension_limit', 'extension_limit_day']);
  52. if (!$old['extension_limit'] && $data['extension_limit']) {
  53. app()->make(UserRepository::class)->initSpreadLimitDay(intval($data['extension_limit_day']));
  54. } else if ($old['extension_limit'] && !$data['extension_limit']) {
  55. app()->make(UserRepository::class)->clearSpreadLimitDay();
  56. } else if ($data['extension_limit_day'] != $old['extension_limit_day'] && $data['extension_limit']) {
  57. app()->make(UserRepository::class)->updateSpreadLimitDay(intval($data['extension_limit_day'] - $old['extension_limit_day']));
  58. }
  59. $arr['sys_extension_type'] = $data['sys_extension_type'];
  60. app()->make(ConfigValueRepository::class)->setFormData($arr, 0);
  61. return app('json')->success('修改成功');
  62. }
  63. public function getGroupBuying()
  64. {
  65. $data = [
  66. 'ficti_status' => systemConfig('ficti_status'),
  67. 'group_buying_rate' => systemConfig('group_buying_rate'),
  68. ];
  69. return app('json')->success($data);
  70. }
  71. public function setGroupBuying()
  72. {
  73. $data['ficti_status'] = $this->request->param('ficti_status') == 1 ? 1 : 0;
  74. $data['group_buying_rate'] = $this->request->param('group_buying_rate');
  75. if ($data['group_buying_rate'] < 0 || $data['group_buying_rate'] > 100)
  76. return app('json')->fail('请填写1~100之间的整数');
  77. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  78. return app('json')->success('修改成功');
  79. }
  80. public function getProfitsharing()
  81. {
  82. return app('json')->success(array_filter(systemConfig(['extract_maxmum_num', 'extract_minimum_line', 'extract_minimum_num', 'open_wx_combine', 'open_wx_sub_mch', 'mer_lock_time']), function ($val) {
  83. return $val !== '';
  84. }) + ['open_wx_sub_mch' => 0, 'open_wx_combine' => 0]);
  85. }
  86. public function setProfitsharing()
  87. {
  88. $data = $this->request->params(['extract_maxmum_num', 'extract_minimum_line', 'extract_minimum_num', 'open_wx_combine', 'open_wx_sub_mch', 'mer_lock_time']);
  89. $config = systemConfig(['open_wx_combine', 'wechat_service_merid', 'wechat_service_key', 'wechat_service_v3key', 'wechat_service_client_cert', 'wechat_service_client_key', 'wechat_service_serial_no']);
  90. $open_wx_combine = $config['open_wx_combine'];
  91. unset($config['open_wx_combine']);
  92. if (($data['open_wx_combine'] || $data['open_wx_sub_mch']) && count(array_filter($config)) < 6) {
  93. return app('json')->fail('请先配置微信服务器相关参数');
  94. }
  95. Db::transaction(function () use ($data, $open_wx_combine) {
  96. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  97. if (!$open_wx_combine && $data['open_wx_combine']) {
  98. $column = app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->column('mer_id');
  99. app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->save(['mer_state' => 0]);
  100. foreach ($column as $merId) {
  101. Queue::push(ChangeMerchantStatusJob::class, $merId);
  102. }
  103. }
  104. });
  105. return app('json')->success('修改成功');
  106. }
  107. }