ConfigOthers.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\controller\admin\system\config;
  12. use app\common\repositories\system\merchant\MerchantRepository;
  13. use app\common\repositories\user\UserRepository;
  14. use crmeb\jobs\ChangeMerchantStatusJob;
  15. use FormBuilder\Factory\Elm;
  16. use think\App;
  17. use crmeb\basic\BaseController;
  18. use app\common\repositories\system\config\ConfigRepository as repository;
  19. use app\common\repositories\system\config\ConfigValueRepository;
  20. use think\facade\Db;
  21. use think\facade\Queue;
  22. use think\facade\Route;
  23. /**
  24. * 其他配置
  25. */
  26. class ConfigOthers extends BaseController
  27. {
  28. public $repository;
  29. public function __construct(App $app, repository $repository)
  30. {
  31. parent::__construct($app);
  32. $this->repository = $repository;
  33. }
  34. /**
  35. * 编辑
  36. * @return \think\response\Json
  37. * @author Qinii
  38. */
  39. public function update()
  40. {
  41. $data = $this->request->params([
  42. 'extension_status',
  43. 'extension_two_rate',
  44. 'extension_one_rate',
  45. 'extension_self',
  46. 'extension_limit',
  47. 'extension_limit_day',
  48. 'sys_extension_type',
  49. 'lock_brokerage_timer',
  50. 'max_bag_number',
  51. 'max_bag_number',
  52. 'promoter_explain',
  53. 'user_extract_min',
  54. 'withdraw_type',
  55. 'promoter_type',
  56. 'promoter_low_money',
  57. 'extract_switch',
  58. 'extension_pop',
  59. 'transfer_scene_id',
  60. 'award_integral_price',
  61. 'extract_commission',
  62. 'award_ordinary',
  63. // 'award_energy_saving_oil',
  64. 'award_gift_pack',
  65. 'award_integral_ordinary',
  66. 'award_integral_energy_saving_oil',
  67. 'award_integral_gift_pack',
  68. 'energy_saving_oil_ratio',
  69. 'gift_pack_ratio',
  70. 'award_brokerage',
  71. ]);
  72. if ($data['extension_two_rate'] < 0 || $data['extension_one_rate'] < 0)
  73. return app('json')->fail('比例不能小于0');
  74. if ($data['award_integral_price'] <= 0)
  75. return app('json')->fail('分红积分基准价格必须高于0');
  76. if (bccomp($data['extension_one_rate'], $data['extension_two_rate'], 4) == -1)
  77. return app('json')->fail('一级比例不能小于二级比例');
  78. if (bccomp(bcadd($data['extension_one_rate'], $data['extension_two_rate'], 3), 1, 3) == 1)
  79. return app('json')->fail('比例之和不能超过1,即100%');
  80. // if (!ctype_digit((string)$data['extension_limit_day']) || $data['extension_limit_day'] <= 0)
  81. // return app('json')->fail('分销绑定时间必须大于0');
  82. if ($data['promoter_type'] == 3 && (!ctype_digit((string)$data['promoter_low_money']) || $data['promoter_low_money'] <= 0))
  83. return app('json')->fail('满额分销最低金额必须大于0');
  84. if ($data['award_ordinary'] < 0)
  85. return app('json')->fail('节能油和普通商品赠送分红额度倍数不能小于0');
  86. if ($data['award_gift_pack'] < 0)
  87. return app('json')->fail('礼包商品赠送分红额度消费金额不能小于0');
  88. if ($data['award_integral_ordinary'] < 0)
  89. return app('json')->fail('普通商品赠送分红积分消费金额不能小于0');
  90. if ($data['award_integral_energy_saving_oil'] < 0)
  91. return app('json')->fail('节能油商品赠送分红积分消费金额不能小于0');
  92. if ($data['award_integral_gift_pack'] < 0)
  93. return app('json')->fail('礼包商品赠送分红积分消费金额不能小于0');
  94. if ($data['energy_saving_oil_ratio'] < 0)
  95. return app('json')->fail('节能油商品业绩分红比例不能小于0');
  96. if ($data['gift_pack_ratio'] < 0)
  97. return app('json')->fail('礼包商品业绩分红比例不能小于0');
  98. if ($data['award_brokerage'] < 0)
  99. return app('json')->fail('购买商品赠送奖金百分比不能小于0');
  100. $old = systemConfig(['extension_limit', 'extension_limit_day']);
  101. if (!$old['extension_limit'] && $data['extension_limit']) {
  102. app()->make(UserRepository::class)->initSpreadLimitDay(intval($data['extension_limit_day']));
  103. } else if ($old['extension_limit'] && !$data['extension_limit']) {
  104. app()->make(UserRepository::class)->clearSpreadLimitDay();
  105. } else if ($data['extension_limit_day'] != $old['extension_limit_day'] && $data['extension_limit']) {
  106. app()->make(UserRepository::class)->updateSpreadLimitDay(intval($data['extension_limit_day'] - $old['extension_limit_day']));
  107. }
  108. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  109. app()->make(ConfigValueRepository::class)->syncConfig();
  110. return app('json')->success('修改成功');
  111. }
  112. /**
  113. * 拼团相关配置
  114. * @return \think\response\Json
  115. * @author Qinii
  116. * @day 4/6/22
  117. */
  118. public function getGroupBuying()
  119. {
  120. $data = [
  121. 'ficti_status' => systemConfig('ficti_status') ?: 0,
  122. 'group_buying_rate' => systemConfig('group_buying_rate'),
  123. ];
  124. return app('json')->success($data);
  125. }
  126. /**
  127. * 拼团相关设置
  128. * @return \think\response\Json
  129. * @author Qinii
  130. */
  131. public function setGroupBuying()
  132. {
  133. $data['ficti_status'] = $this->request->param('ficti_status') == 1 ? 1 : 0;
  134. $data['group_buying_rate'] = $this->request->param('group_buying_rate');
  135. if ($data['group_buying_rate'] < 0 || $data['group_buying_rate'] > 100)
  136. return app('json')->fail('请填写1~100之间的整数');
  137. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  138. return app('json')->success('修改成功');
  139. }
  140. /**
  141. * 自动分账相关设置
  142. * @return \think\response\Json
  143. * @author Qinii
  144. */
  145. public function getProfitsharing()
  146. {
  147. 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) {
  148. return $val !== '';
  149. }) + ['open_wx_sub_mch' => 0, 'open_wx_combine' => 0]);
  150. }
  151. /**
  152. * 提现相关设置
  153. * @return \think\response\Json
  154. * @author Qinii
  155. */
  156. public function setProfitsharing()
  157. {
  158. $data = $this->request->params(['extract_maxmum_num', 'extract_minimum_line', 'extract_minimum_num', 'open_wx_combine', 'open_wx_sub_mch', 'mer_lock_time']);
  159. if ($data['extract_minimum_num'] < $data['extract_minimum_line'])
  160. return app('json')->fail('最小提现额度不能小于最低提现金额');
  161. if ($data['extract_maxmum_num'] < $data['extract_minimum_num'])
  162. return app('json')->fail('最高提现额度不能小于最小提现额度');
  163. $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']);
  164. $open_wx_combine = $config['open_wx_combine'];
  165. unset($config['open_wx_combine']);
  166. if (($data['open_wx_combine'] || $data['open_wx_sub_mch']) && count(array_filter($config)) < 6) {
  167. return app('json')->fail('请先配置微信服务商相关参数');
  168. }
  169. Db::transaction(function () use ($data, $open_wx_combine) {
  170. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  171. if (!$open_wx_combine && $data['open_wx_combine']) {
  172. $column = app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->column('mer_id');
  173. app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->save(['mer_state' => 0]);
  174. foreach ($column as $merId) {
  175. Queue::push(ChangeMerchantStatusJob::class, $merId);
  176. }
  177. }
  178. });
  179. return app('json')->success('修改成功');
  180. }
  181. }