PerformanceDivvy.php 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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\PerformanceDivvyValidate;
  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 PerformanceDivvy 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_performance_divvy')->where($where)->order('kpi asc,id asc')->page($page, $limit)->select()->each(function ($v){
  36. $v['gdp']=set_price_rtrim($v['gdp']).' %';
  37. $v['kpi']=set_price_rtrim($v['kpi']);
  38. return $v;
  39. });
  40. $data['list']=$list;
  41. $data['total']=Db::name('enterprise_performance_divvy')->count();
  42. return app('json')->success($data);
  43. }
  44. public function createForm(){
  45. $data['state']=1;
  46. $merId=$this->request->merId();
  47. $form= Elm::createForm(Route::buildUrl('performanceDivvyCreate')->build(), [
  48. Elm::input('name', '身份')->required(),
  49. Elm::number('gdp', '分红池占比(日销售额百分比)')->required(),
  50. Elm::number('kpi', '业绩考核标准(万元)')->required()->info('小市场业绩之和,达到考核标准后身份升级;'),
  51. Elm::number('num', '邀请人数')->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::textarea('content', '权益说明')->required()->attrs(['rows' => 15]),
  54. Elm::switches('state', '状态')->inactiveValue(0)->activeValue(1)->inactiveText('关闭')->activeText('开启'),
  55. ]);
  56. $form->setTitle( '添加身份' )->formData($data);
  57. return app('json')->success(formToData($form));
  58. }
  59. public function updateForm($id){
  60. $data=Db::name('enterprise_performance_divvy')->find($id);
  61. if(!$data){
  62. return app('json')->fail('数据不存在');
  63. }
  64. $data['state']=(int)$data['state'];
  65. $merId=$this->request->merId();
  66. $form= Elm::createForm(Route::buildUrl('performanceDivvyUpdate', compact('id'))->build(), [
  67. Elm::input('name', '身份')->required(),
  68. Elm::number('gdp', '分红池占比(日销售额百分比)')->required(),
  69. Elm::number('kpi', '业绩考核标准(万元)')->required()->info('小市场业绩之和,达到考核标准后身份升级;'),
  70. Elm::number('num', '邀请人数')->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::textarea('content', '权益说明')->required()->attrs(['rows' => 15]),
  73. Elm::switches('state', '状态')->inactiveValue(0)->activeValue(1)->inactiveText('关闭')->activeText('开启'),
  74. ]);
  75. $form->setTitle(is_null($id) ? '添加身份' : '修改身份')->formData($data);
  76. $list=formToData($form);
  77. $list['data']=$data;
  78. return app('json')->success($list);
  79. }
  80. public function create(PerformanceDivvyValidate $validate)
  81. {
  82. $data = $this->checkParam($validate);
  83. // 使用 filter_var 函数验证是否为非负数
  84. if (filter_var($data['gdp'], FILTER_VALIDATE_FLOAT) !== false && $data['gdp'] >= 0) {
  85. // 参数合法,且为非负数
  86. } else {
  87. return app('json')->fail('分红池占比(日销售额百分比)不能是负数');
  88. // 参数不合法,或者为负数
  89. }
  90. if (filter_var($data['kpi'], FILTER_VALIDATE_FLOAT) !== false && $data['kpi'] >= 0) {
  91. // 参数合法,且为非负数
  92. } else {
  93. return app('json')->fail('业绩考核标准(万元)不能是负数');
  94. // 参数不合法,或者为负数
  95. }
  96. if (filter_var($data['num'], FILTER_VALIDATE_FLOAT) !== false && $data['num'] >= 0) {
  97. // 参数合法,且为非负数
  98. } else {
  99. return app('json')->fail('邀请人数不能是负数');
  100. // 参数不合法,或者为负数
  101. }
  102. if($data['state']==1){
  103. $member_settings=merchantConfig($this->request->merId(), 'member_settings');
  104. $merId = $this->request->merId();
  105. $where['mer_id']=$merId;
  106. $where['state']=1;
  107. $yeji=Db::name('enterprise_performance_divvy')->where($where)->sum('gdp');
  108. $daili=Db::name('enterprise_agent_divvy')->where($where)->sum('gdp');
  109. // 推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100
  110. $bili1=$member_settings['tjj'] + $member_settings['ylj']+$yeji+$daili+$data['gdp'];
  111. if($bili1>100){
  112. return app('json')->fail('推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100');
  113. }
  114. // 运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)
  115. $bili2=$member_settings['yy_one']+$member_settings['dls'];
  116. if($member_settings['yy_kg']!=1){
  117. $bili2=$member_settings['dls'];
  118. }
  119. if($bili2<=(100-$bili1)){
  120. }else{
  121. return app('json')->fail('运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)');
  122. }
  123. }
  124. $data['mer_id']=$this->request->merId();
  125. $count=Db::name('enterprise_performance_divvy')->where('mer_id',$data['mer_id'])->where('kpi', $data['kpi'])->count();
  126. if($count>0){
  127. return app('json')->fail('业绩考核标准金额已存在,请重新输入~');
  128. }
  129. Db::name('enterprise_performance_divvy')->insertGetId($data);
  130. return app('json')->success('添加成功');
  131. }
  132. public function update($id, PerformanceDivvyValidate $validate)
  133. {
  134. $data = $this->checkParam($validate);
  135. // 使用 filter_var 函数验证是否为非负数
  136. if (filter_var($data['gdp'], FILTER_VALIDATE_FLOAT) !== false && $data['gdp'] >= 0) {
  137. // 参数合法,且为非负数
  138. } else {
  139. return app('json')->fail('分红池占比(日销售额百分比)不能是负数');
  140. // 参数不合法,或者为负数
  141. }
  142. if (filter_var($data['kpi'], FILTER_VALIDATE_FLOAT) !== false && $data['kpi'] >= 0) {
  143. // 参数合法,且为非负数
  144. } else {
  145. return app('json')->fail('业绩考核标准(万元)不能是负数');
  146. // 参数不合法,或者为负数
  147. }
  148. if (filter_var($data['num'], FILTER_VALIDATE_FLOAT) !== false && $data['num'] >= 0) {
  149. // 参数合法,且为非负数
  150. } else {
  151. return app('json')->fail('邀请人数不能是负数');
  152. // 参数不合法,或者为负数
  153. }
  154. if($data['state']==1){
  155. $member_settings=merchantConfig($this->request->merId(), 'member_settings');
  156. $merId = $this->request->merId();
  157. $where['mer_id']=$merId;
  158. $where['state']=1;
  159. $yeji=Db::name('enterprise_performance_divvy')->where($where)->sum('gdp');
  160. $daili=Db::name('enterprise_agent_divvy')->where($where)->sum('gdp');
  161. $oldgdp=Db::name('enterprise_performance_divvy')->where('state',1)->where('id',$id)->value('gdp');
  162. // 推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100
  163. $bili1=$member_settings['tjj'] + $member_settings['ylj']+$yeji+$daili+$data['gdp']-$oldgdp;
  164. if($bili1>100){
  165. return app('json')->fail('推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例≤100');
  166. }
  167. // 运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)
  168. $bili2=$member_settings['yy_one']+$member_settings['dls'];
  169. if($member_settings['yy_kg']!=1){
  170. $bili2=$member_settings['dls'];
  171. }
  172. if($bili2<=(100-$bili1)){
  173. }else{
  174. return app('json')->fail('运营中心比例+推荐代理商收益≤100-(推荐奖比例+养老金比例+业绩分红总比例+代理商分红总比例)');
  175. }
  176. }
  177. $data['mer_id']=$this->request->merId();
  178. $count=Db::name('enterprise_performance_divvy')->where('mer_id',$data['mer_id'])->where('kpi', $data['kpi'])->where('id !='.$id)->count();
  179. if($count>0){
  180. return app('json')->fail('业绩考核标准金额已存在,请重新输入~');
  181. }
  182. Db::name('enterprise_performance_divvy')->where('id',$id)->update($data);
  183. return app('json')->success('编辑成功');
  184. }
  185. private function checkParam(PerformanceDivvyValidate $validate)
  186. {
  187. $data = $this->request->params(['name', 'gdp', 'kpi', 'num', 'img', 'content', 'state']);
  188. $validate->check($data);
  189. return $data;
  190. }
  191. }