ConfigOthers.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 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\ConfigClassifyRepository;
  19. use app\common\repositories\system\config\ConfigRepository as repository;
  20. use app\common\repositories\system\config\ConfigValueRepository;
  21. use think\facade\Db;
  22. use think\facade\Queue;
  23. use think\facade\Route;
  24. class ConfigOthers extends BaseController
  25. {
  26. public $repository;
  27. public function __construct(App $app, repository $repository)
  28. {
  29. parent::__construct($app);
  30. $this->repository = $repository;
  31. }
  32. public function update()
  33. {
  34. $data = $this->request->params([
  35. 'extension_status',
  36. 'extension_two_rate',
  37. 'extension_one_rate',
  38. 'extension_self',
  39. 'extension_limit',
  40. 'extension_limit_day',
  41. 'sys_extension_type',
  42. 'lock_brokerage_timer',
  43. 'max_bag_number',
  44. 'promoter_explain',
  45. 'user_extract_min',
  46. 'withdraw_type'
  47. ]);
  48. if ($data['extension_two_rate'] < 0 || $data['extension_one_rate'] < 0)
  49. return app('json')->fail('比例不能小于0');
  50. if (bccomp($data['extension_one_rate'], $data['extension_two_rate'], 4) == -1)
  51. return app('json')->fail('一级比例不能小于二级比例');
  52. if (bccomp(bcadd($data['extension_one_rate'], $data['extension_two_rate'], 3), 1, 3) == 1)
  53. return app('json')->fail('比例之和不能超过1,即100%');
  54. if (!ctype_digit((string)$data['extension_limit_day']) || $data['extension_limit_day'] <= 0)
  55. return app('json')->fail('分销绑定时间必须大于0');
  56. $old = systemConfig(['extension_limit', 'extension_limit_day']);
  57. if (!$old['extension_limit'] && $data['extension_limit']) {
  58. app()->make(UserRepository::class)->initSpreadLimitDay(intval($data['extension_limit_day']));
  59. } else if ($old['extension_limit'] && !$data['extension_limit']) {
  60. app()->make(UserRepository::class)->clearSpreadLimitDay();
  61. } else if ($data['extension_limit_day'] != $old['extension_limit_day'] && $data['extension_limit']) {
  62. app()->make(UserRepository::class)->updateSpreadLimitDay(intval($data['extension_limit_day'] - $old['extension_limit_day']));
  63. }
  64. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  65. return app('json')->success('修改成功');
  66. }
  67. /**
  68. * TODO 拼团相关配置
  69. * @return \think\response\Json
  70. * @author Qinii
  71. * @day 4/6/22
  72. */
  73. public function getGroupBuying()
  74. {
  75. $data = [
  76. 'ficti_status' => systemConfig('ficti_status'),
  77. 'group_buying_rate' => systemConfig('group_buying_rate'),
  78. ];
  79. return app('json')->success($data);
  80. }
  81. public function setGroupBuying()
  82. {
  83. $data['ficti_status'] = $this->request->param('ficti_status') == 1 ? 1 : 0;
  84. $data['group_buying_rate'] = $this->request->param('group_buying_rate');
  85. if ($data['group_buying_rate'] < 0 || $data['group_buying_rate'] > 100)
  86. return app('json')->fail('请填写1~100之间的整数');
  87. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  88. return app('json')->success('修改成功');
  89. }
  90. public function getProfitsharing()
  91. {
  92. 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) {
  93. return $val !== '';
  94. }) + ['open_wx_sub_mch' => 0, 'open_wx_combine' => 0]);
  95. }
  96. public function setProfitsharing()
  97. {
  98. $data = $this->request->params(['extract_maxmum_num', 'extract_minimum_line', 'extract_minimum_num', 'open_wx_combine', 'open_wx_sub_mch', 'mer_lock_time']);
  99. if ($data['extract_minimum_num'] < $data['extract_minimum_line'])
  100. return app('json')->fail('最小提现额度不能小于最低提现金额');
  101. if ($data['extract_maxmum_num'] < $data['extract_minimum_num'])
  102. return app('json')->fail('最高提现额度不能小于最小提现额度');
  103. $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']);
  104. $open_wx_combine = $config['open_wx_combine'];
  105. unset($config['open_wx_combine']);
  106. if (($data['open_wx_combine'] || $data['open_wx_sub_mch']) && count(array_filter($config)) < 6) {
  107. return app('json')->fail('请先配置微信服务商相关参数');
  108. }
  109. Db::transaction(function () use ($data, $open_wx_combine) {
  110. app()->make(ConfigValueRepository::class)->setFormData($data, 0);
  111. if (!$open_wx_combine && $data['open_wx_combine']) {
  112. $column = app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->column('mer_id');
  113. app()->make(MerchantRepository::class)->search([])->where('sub_mchid', '')->save(['mer_state' => 0]);
  114. foreach ($column as $merId) {
  115. Queue::push(ChangeMerchantStatusJob::class, $merId);
  116. }
  117. }
  118. });
  119. return app('json')->success('修改成功');
  120. }
  121. /**
  122. * 未启用
  123. * TODO 上传图片水印设置
  124. * @return \think\response\Json
  125. * @author Qinii
  126. * @day 12/14/21
  127. */
  128. public function getImageWaterConfig()
  129. {
  130. $config = [
  131. 'image_watermark_status',
  132. 'watermark_type',
  133. 'watermark_image',
  134. 'watermark_opacity',
  135. 'watermark_position',
  136. 'watermark_rotate',
  137. 'watermark_text',
  138. 'watermark_text_angle',
  139. 'watermark_text_color',
  140. 'watermark_text_size',
  141. 'watermark_x',
  142. 'watermark_y'
  143. ];
  144. $formData = systemConfig($config);
  145. $form = Elm::createForm(Route::buildUrl('configOthersWaterSave')->build());
  146. $form->setRule([
  147. Elm::radio('image_watermark_status', '是否开启水印')
  148. ->setOptions([
  149. ['value' => 1, 'label' => '开启'],
  150. ['value' => 0, 'label' => '关闭'],
  151. ])->control([
  152. [
  153. 'value' => 1,
  154. 'rule'=> [
  155. Elm::radio('watermark_type', '水印类型')
  156. ->setOptions([
  157. ['value' => 1, 'label' => '图片'],
  158. ['value' => 2, 'label' => '文字'],
  159. ])
  160. ->control([
  161. [
  162. 'value' => 1,
  163. 'rule'=> [
  164. Elm::frameImage('watermark_image', '水印图片', '/' . config('admin.admin_prefix') . '/setting/uploadPicture?field=watermark_image&type=1')
  165. ->value($formData['watermark_image'] ?? '')
  166. ->modal(['modal' => false])
  167. ->width('896px')
  168. ->height('480px'),
  169. Elm::number('watermark_opacity','水印图片透明度')->required(),
  170. Elm::number('watermark_rotate','水印图片倾斜度')->required(),
  171. ]
  172. ],
  173. [
  174. 'value' => 2,
  175. 'rule'=> [
  176. Elm::input('watermark_text', '水印文字')->required(),
  177. Elm::number('watermark_text_size','水印文字大小(单位:px)'),
  178. Elm::color('watermark_text_color','水印字体颜色'),
  179. Elm::number('watermark_text_angle','水印字体旋转角度'),
  180. ]
  181. ],
  182. ]),
  183. Elm::radio('watermark_position','水印位置')->setOptions([
  184. ['value' => 0, 'label' => '左上'],
  185. ['value' => 1, 'label' => '中上'],
  186. ['value' => 2, 'label' => '右上'],
  187. ['value' => 3, 'label' => '左中'],
  188. ['value' => 4, 'label' => '居中'],
  189. ['value' => 5, 'label' => '中右'],
  190. ['value' => 6, 'label' => '左下'],
  191. ['value' => 7, 'label' => '中下'],
  192. ['value' => 8, 'label' => '右下'],
  193. ]),
  194. Elm::number('watermark_x','水印横坐标偏移量(单位:px)'),
  195. Elm::number('watermark_y','水印纵坐标偏移量(单位:px)'),
  196. ]
  197. ],
  198. ]),
  199. ]);
  200. $form->setTitle('水印配置')->formData($formData);
  201. return app('json')->success(formToData($form));
  202. }
  203. /**
  204. * 未启用
  205. * TODO 保存水印设置信息
  206. * @return \think\response\Json
  207. * @author Qinii
  208. * @day 12/14/21
  209. */
  210. public function setImageWaterConfig()
  211. {
  212. $arr = $this->request->params([
  213. 'image_watermark_status',
  214. 'watermark_type',
  215. 'watermark_image',
  216. 'watermark_opacity',
  217. 'watermark_position',
  218. 'watermark_rotate',
  219. 'watermark_text',
  220. 'watermark_text_angle',
  221. 'watermark_text_color',
  222. 'watermark_text_size',
  223. 'watermark_x',
  224. 'watermark_y'
  225. ]);
  226. app()->make(ConfigValueRepository::class)->setFormData($arr, 0);
  227. return app('json')->success('修改成功');
  228. }
  229. }