AgentDivvy.php 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. /**
  3. * @package 商户端
  4. * @Author: ljj
  5. * @Date: 2021/1/5
  6. */
  7. namespace app\controller\merchant\system;
  8. use app\validate\merchant\AgentDivvyValidate;
  9. use FormBuilder\Factory\Elm;
  10. use think\App;
  11. use crmeb\basic\BaseController;
  12. use think\facade\Db;
  13. use think\facade\Route;
  14. class AgentDivvy extends BaseController
  15. {
  16. protected $userInfo;
  17. /**
  18. * ProductCategory constructor.
  19. * @param App $app
  20. */
  21. public function __construct(App $app)
  22. {
  23. parent::__construct($app);
  24. // $this->userInfo =$this->request->isLogin() ? $this->request->userInfo():null;
  25. }
  26. public function lst()
  27. {
  28. [$page, $limit] = $this->getPage();
  29. $mer_id=$this->request->merId();
  30. $where['mer_id']=$mer_id;
  31. $state = $this->request->param('state','-1');
  32. if($state==1){
  33. $where['state']=1;
  34. }
  35. $list=Db::name('enterprise_agent_divvy')->where($where)->order('prize asc,id asc')->page($page, $limit)->select()->each(function ($v){
  36. $v['gdp']=set_price_rtrim($v['gdp']).' %';
  37. $v['jz']='满 '.set_price_rtrim($v['jz']).' 倍退出';
  38. $v['prize']=set_price_rtrim($v['prize']);
  39. return $v;
  40. });
  41. $data['list']=$list;
  42. $data['total']=Db::name('enterprise_agent_divvy')->count();
  43. return app('json')->success($data);
  44. }
  45. public function createForm(){
  46. $data['state']=1;
  47. $merId=$this->request->merId();
  48. $form= Elm::createForm(Route::buildUrl('agentDivvyCreate')->build(), [
  49. Elm::input('name', '级别')->required(),
  50. Elm::number('gdp', '分红池占比(日销售额百分比)')->required(),
  51. Elm::number('jz', '退出机制(满多少倍退出)')->required(),
  52. Elm::frameImage('img', '身份标识图标', '/' . config('admin.' . ($merId ? 'merchant' : 'admin') . '_prefix') . '/setting/uploadPicture?field=img&type=1')->width('896px')->height('480px')->props(['footer' => false])->modal(['modal' => false, 'custom-class' => 'suibian-modal']),
  53. Elm::number('prize', '代理费用(万)')->required(),
  54. // Elm::textarea('content', '权益说明')->required()->className(''),
  55. Elm::switches('state', '状态')->inactiveValue(0)->activeValue(1)->inactiveText('关闭')->activeText('开启'),
  56. ]);
  57. $form->setTitle( '添加代理级别' )->formData($data);
  58. return app('json')->success(formToData($form));
  59. }
  60. public function updateForm($id){
  61. $data=Db::name('enterprise_agent_divvy')->find($id);
  62. if(!$data){
  63. return app('json')->fail('数据不存在');
  64. }
  65. $data['state']=(int)$data['state'];
  66. $merId=$this->request->merId();
  67. $form= Elm::createForm(Route::buildUrl('agentDivvyUpdate', compact('id'))->build(), [
  68. Elm::input('name', '级别')->required(),
  69. Elm::number('gdp', '分红池占比(日销售额百分比)')->required(),
  70. Elm::number('jz', '退出机制(满多少倍退出)')->required(),
  71. Elm::frameImage('img', '身份标识图标', '/' . config('admin.' . ($merId ? 'merchant' : 'admin') . '_prefix') . '/setting/uploadPicture?field=img&type=1')->width('896px')->height('480px')->props(['footer' => false])->modal(['modal' => false, 'custom-class' => 'suibian-modal']),
  72. Elm::number('prize', '代理费用(万)')->required(),
  73. // Elm::textarea('content', '权益说明')->required()->className(''),
  74. Elm::switches('state', '状态')->inactiveValue(0)->activeValue(1)->inactiveText('关闭')->activeText('开启'),
  75. ]);
  76. $form->setTitle('修改代理级别')->formData($data);
  77. $list=formToData($form);
  78. $list['data']=$data;
  79. return app('json')->success($list);
  80. }
  81. public function create(AgentDivvyValidate $validate)
  82. {
  83. $data = $this->checkParam($validate);
  84. $data['mer_id']=$this->request->merId();
  85. // 使用 filter_var 函数验证是否为非负数
  86. if (filter_var($data['gdp'], FILTER_VALIDATE_FLOAT) !== false && $data['gdp'] >= 0) {
  87. // 参数合法,且为非负数
  88. } else {
  89. return app('json')->fail('分红池占比(日销售额百分比)不能是负数');
  90. // 参数不合法,或者为负数
  91. }
  92. if (filter_var($data['jz'], FILTER_VALIDATE_FLOAT) !== false && $data['jz'] >= 0) {
  93. // 参数合法,且为非负数
  94. } else {
  95. return app('json')->fail('退出机制(满多少倍退出)不能是负数');
  96. // 参数不合法,或者为负数
  97. }
  98. if (filter_var($data['prize'], FILTER_VALIDATE_FLOAT) !== false && $data['prize'] >= 0) {
  99. // 参数合法,且为非负数
  100. } else {
  101. return app('json')->fail('代理费用(万)不能是负数');
  102. // 参数不合法,或者为负数
  103. }
  104. if($data['state']==1){
  105. $member_settings=merchantConfig($this->request->merId(), 'member_settings');
  106. $merId = $this->request->merId();
  107. $where['mer_id']=$merId;
  108. $where['state']=1;
  109. $yeji=Db::name('enterprise_performance_divvy')->where($where)->sum('gdp');
  110. $daili=Db::name('enterprise_agent_divvy')->where($where)->sum('gdp');
  111. // 推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100
  112. $bili1=$member_settings['tjj'] + $member_settings['ylj']+$yeji+$daili+$data['gdp'];
  113. if($bili1>100){
  114. return app('json')->fail('推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100');
  115. }
  116. // 运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)
  117. $bili2=$member_settings['yy_one']+$member_settings['dls'];
  118. if($member_settings['yy_kg']!=1){
  119. $bili2=$member_settings['dls'];
  120. }
  121. if($bili2<=(100-$bili1)){
  122. }else{
  123. return app('json')->fail('运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)');
  124. }
  125. }
  126. Db::name('enterprise_agent_divvy')->insertGetId($data);
  127. return app('json')->success('添加成功');
  128. }
  129. public function update($id, AgentDivvyValidate $validate)
  130. {
  131. $data = $this->checkParam($validate);
  132. // 使用 filter_var 函数验证是否为非负数
  133. if (filter_var($data['gdp'], FILTER_VALIDATE_FLOAT) !== false && $data['gdp'] >= 0) {
  134. // 参数合法,且为非负数
  135. } else {
  136. return app('json')->fail('分红池占比(日销售额百分比)不能是负数');
  137. // 参数不合法,或者为负数
  138. }
  139. if (filter_var($data['jz'], FILTER_VALIDATE_FLOAT) !== false && $data['jz'] >= 0) {
  140. // 参数合法,且为非负数
  141. } else {
  142. return app('json')->fail('退出机制(满多少倍退出)不能是负数');
  143. // 参数不合法,或者为负数
  144. }
  145. if (filter_var($data['prize'], FILTER_VALIDATE_FLOAT) !== false && $data['prize'] >= 0) {
  146. // 参数合法,且为非负数
  147. } else {
  148. return app('json')->fail('代理费用(万)不能是负数');
  149. // 参数不合法,或者为负数
  150. }
  151. if($data['state']==1){
  152. $member_settings=merchantConfig($this->request->merId(), 'member_settings');
  153. $merId = $this->request->merId();
  154. $where['mer_id']=$merId;
  155. $where['state']=1;
  156. $yeji=Db::name('enterprise_performance_divvy')->where($where)->sum('gdp');
  157. $daili=Db::name('enterprise_agent_divvy')->where($where)->sum('gdp');
  158. $oldgdp=Db::name('enterprise_agent_divvy')->where('id',$id)->where('state',1)->value('gdp');
  159. // 推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100
  160. $bili1=$member_settings['tjj'] + $member_settings['ylj']+$yeji+$daili+$data['gdp']-$oldgdp;
  161. if($bili1>100){
  162. return app('json')->fail('推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100');
  163. }
  164. // 运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)
  165. $bili2=$member_settings['yy_one']+$member_settings['dls'];
  166. if($member_settings['yy_kg']!=1){
  167. $bili2=$member_settings['dls'];
  168. }
  169. if($bili2<=(100-$bili1)){
  170. }else{
  171. return app('json')->fail('运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)');
  172. }
  173. }
  174. Db::name('enterprise_agent_divvy')->where('id',$id)->update($data);
  175. return app('json')->success('编辑成功');
  176. }
  177. private function checkParam(AgentDivvyValidate $validate)
  178. {
  179. $data = $this->request->params(['name', 'gdp', 'jz', 'prize', 'img', 'state']);
  180. $validate->check($data);
  181. return $data;
  182. }
  183. }