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 .= '
面值 |
'.$name.' |
';
foreach ($rule as $k => $v) {
if ($product_key == 'dhcz' && isset($this->key[$k]) && $this->key[$k]) {
$k = $this->key[$k];
}
$table .= ''.$k.' |
'.$v.' |
';
}
$table .= '
';
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);
}
}