title = '商户折扣管理'; $this->mid = input('mid'); $query = $this->_query('merchant_product'); $query->equal('mid')->dateBetween('create_at'); $query->group('product_key')->order('id desc')->page(); } /** * 数据列表处理 * @param array $data * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ protected function _page_filter(&$data) { $this->key = PercentService::instance()->getIsp(); foreach ($data as &$vo) { $merchant = $this->app->db->name('merchant_list')->where(['id' => $vo['mid']])->find(); $vo['mname'] = $merchant['name']; $vo['product_name'] = $this->app->db->name('channel_product')->where(['key' => $vo['product_key']])->value('name'); $percent = $this->app->db->name('merchant_percent')->where(['mid' => $vo['mid'], 'product_key' => $vo['product_key']])->find(); $vo['rule'] = ''; if ($percent) { $vo['percent_type'] = $percent['percent_type']; $vo['percent'] = $percent['percent']; $vo['rule'] = $this->rule($vo['product_key'], $percent['rule'], $percent['percent_type']); } else { $vo['percent'] = $merchant['percent']; $vo['percent_type'] = 1; } if ($vo['percent_type'] == 2) { $vo['percent_type_name'] = '固定数值'; } else { $vo['percent_type_name'] = '百分比'; } } } protected function rule($product_key, $rule, $type) { if ($rule) { $rule = json_decode($rule, true); if ($type == 1) { $name = '百分比'; } else { $name = '固定数值'; } $table = ''; $table .= ''; foreach ($rule as $k => $v) { if ($product_key == 'dhcz' && isset($this->key[$k]) && $this->key[$k]) { $k = $this->key[$k]; } $table .= ''; } $table .= '
面值 '.$name.'
'.$k.' '.$v.'
'; return $table; } else { return ''; } } # 获取所有选择的面值 private function getCash($mid, $product_key) { $product = $this->app->db->name('merchant_product')->where(['mid' => $mid, 'product_key' => $product_key])->select(); $this->key = false; if ($product_key == 'dhcz') { $this->key = PercentService::instance()->getIsp(2); } $cash = array(); if ($product) { foreach ($product as $k => $v) { $v['product'] = $this->app->db->name('channel_product')->where(['id' => $v['pid']])->find(); if (!$v['cash']) { $v['cash'] = $v['product']['value']; } if ($v['cash']) { $temp = explode(',', $v['cash']); foreach ($temp as $k1 => $v1) { if ($this->key && isset($this->key[$v1]) && $this->key[$v1]) { $cash[$this->key[$v1]] = $v1; } else { $cash[$v1] = $v1; } } } } } return $cash; } /** * 表单数据处理 * @param array $data * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ protected function _form_filter(&$data) { $this->mid = input('mid'); $this->pid = input('pid'); $this->product_key = input('product_key'); $this->cash = $this->getCash($this->mid, $this->product_key); $this->rule = array(); $info = $this->app->db->name('merchant_percent')->where(['mid' => $this->mid, 'product_key' => $this->product_key])->find(); if (!$info) { $merchant = $this->app->db->name('merchant_list')->where(['id' => $this->mid])->find(); $data['percent'] = $merchant['percent']; $data['percent_type'] = 1; } else { $data['percent'] = $info['percent']; $data['percent_type'] = $info['percent_type']; if ($info['rule']) { $this->rule = json_decode($info['rule'], true); } if ($info['rule']) { $rule = json_decode($info['rule'], true); if ($this->product_key == 'dhcz') { $this->rule = array(); $key = PercentService::instance()->getIsp(); foreach ($rule as $k => $v) { if (isset($key[$k]) && $key[$k]) { $this->rule[$key[$k]] = $v; } } } else { $this->rule = $rule; } } } } protected function _form_save(&$data) { return false; } protected function _form_result($id, $data) { $this->mid = input('mid'); $this->pid = input('pid'); $this->product_key = input('product_key'); $this->cash = $this->getCash($this->mid, $this->product_key); $info = $this->app->db->name('merchant_percent')->where(['mid' => $this->mid, 'product_key' => $this->product_key])->find(); $percent = input('percent'); $percent_type = input('percent_type'); if ($this->cash) { $rule = array(); foreach ($this->cash as $k => $v) { $input = input('cash_percent_' . $k); if ($input) { if ($this->key && isset($this->key[$v]) && $this->key[$v]) { $v = $this->key[$v]; } $rule[$v] = $input; } } if ($rule) { $rule = json_encode($rule); } } else { $rule = ''; } if (!$info) { $mid = $insert['mid'] = $this->mid; $product_key = $insert['product_key'] = $this->product_key; $insert['percent'] = $percent; $insert['percent_type'] = $percent_type; if ($rule) { $insert['rule'] = $rule; } $this->app->db->name('merchant_percent')->insert($insert); } else { $mid = $update['mid'] = $this->mid; $product_key = $update['product_key'] = $this->product_key; $update['percent'] = $percent; $update['percent_type'] = $percent_type; if ($rule) { $update['rule'] = $rule; } $this->app->db->name('merchant_percent')->where(['id' => $info['id']])->update($update); } //PercentService::instance()->get($mid, $product_key, false); $this->success('操作成功', ''); } /** * 编辑 * @auth true * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function edit() { $this->_form($this->table, 'form'); } /** * 删除渠道商品 * @auth true * @throws \think\db\exception\DbException */ public function remove() { $this->_delete($this->table); } }