Compare commits

..

7 Commits

Author SHA1 Message Date
邹景立
f33cdcc5de Update cropper.html 2022-04-30 17:40:31 +08:00
邹景立
d79b93b9e1 优化代码 2022-04-30 17:34:06 +08:00
邹景立
2ac2f95e1f 修改默认时间处理 2022-04-30 17:27:21 +08:00
邹景立
4435dcf61a 修改等级模型调用 2022-04-30 17:24:32 +08:00
邹景立
57fa2645dc 修改用户等级配置 2022-04-30 17:14:46 +08:00
邹景立
b765e011a2 Update index_search.html 2022-04-30 16:26:34 +08:00
邹景立
9d5b9523c2 优化Excel案例 2022-04-30 16:23:19 +08:00
19 changed files with 73 additions and 68 deletions

View File

@ -104,19 +104,11 @@
};
layui.excel.setExportCellStyle(data, 'A2:' + lastCol + data.length, {
s: style1
}, function (oldCell, newCell, row, config, currentRow, currentCol, fieldKey) {
// oldCell:原有数据,
// newCell:根据批量设置规则自动生成的样式
// row:所在行数据
// config:传入的配置
// currentRow:当前行索引
// currentCol:当前列索引
// fieldKey:当前字段索引
}, function (rawCell, newCell, row, config, currentRow, currentCol, fieldKey) {
/* 判断并转换单元格数据为对象,以便初始化样式 */
if (typeof oldCell !== 'object') oldCell = {v: oldCell};
oldCell.s = style2;
return (currentRow % 2 === 0) ? newCell : oldCell;
typeof rawCell !== 'object' && (rawCell = {v: rawCell});
rawCell.s = Object.assign({}, style2, rawCell.s || {});
return (currentRow % 2 === 0) ? newCell : rawCell;
});
// 设置表格行宽高,需要设置最后的行或列宽高,否则部分不生效

View File

@ -3,6 +3,7 @@
namespace app\data\controller\api\auth;
use app\data\controller\api\Auth;
use app\data\model\BaseUserUpgrade;
use app\data\model\DataUser;
use app\data\service\RebateService;
use app\data\service\UserAdminService;
@ -102,13 +103,7 @@ class Center extends Auth
*/
public function levels()
{
$levels = UserUpgradeService::instance()->levels();
foreach ($levels as &$level) {
$level['prizes'] = [];
foreach (str2arr($level['rebate_rule']) as $code) {
$level['prizes'][$code] = RebateService::instance()->name($code);
}
}
$levels = BaseUserUpgrade::items();
$this->success('获取用户等级', array_values($levels));
}

View File

@ -3,6 +3,7 @@
namespace app\data\controller\base;
use app\data\model\BaseUserDiscount;
use app\data\model\BaseUserUpgrade;
use app\data\service\UserUpgradeService;
use think\admin\Controller;
use think\admin\helper\QueryHelper;
@ -64,7 +65,7 @@ class Discount extends Controller
}
$vo['items'] = json_encode($rule, JSON_UNESCAPED_UNICODE);
} else {
$this->levels = UserUpgradeService::levels();
$this->levels = BaseUserUpgrade::items();
if (empty($this->levels)) $this->error('未配置用户等级!');
foreach ($vo['items'] ?? [] as $item) {
$vo["_level_{$item['level']}"] = $item['discount'];

View File

@ -27,20 +27,6 @@ class Upgrade extends Controller
BaseUserUpgrade::mQuery()->order('number asc')->layTable();
}
/**
* 数据列表处理
* @param array $data
*/
protected function _page_filter(array &$data)
{
foreach ($data as &$vo) {
$vo['rebate_rule'] = str2arr($vo['rebate_rule']);
foreach ($vo['rebate_rule'] as &$v) {
$v = RebateService::instance()->name($v);
}
}
}
/**
* 添加用户等级
* @auth true
@ -70,10 +56,8 @@ class Upgrade extends Controller
if ($this->request->isGet()) {
$this->prizes = RebateService::PRIZES;
$vo['number'] = $vo['number'] ?? BaseUserUpgrade::maxNumber();
$vo['rebate_rule'] = str2arr($vo['rebate_rule'] ?? '');
} else {
$vo['utime'] = time();
$vo['rebate_rule'] = arr2str($vo['rebate_rule'] ?? []);
// 用户升级条件开关
$vo['goods_vip_status'] = isset($vo['goods_vip_status']) ? 1 : 0;
$vo['teams_users_status'] = isset($vo['teams_users_status']) ? 1 : 0;

View File

@ -8,7 +8,6 @@ use app\data\service\NewsService;
use think\admin\Controller;
use think\admin\extend\CodeExtend;
use think\admin\helper\QueryHelper;
use think\admin\model\SystemBase;
/**
* 文章内容管理

View File

@ -4,6 +4,7 @@ namespace app\data\controller\shop;
use app\data\model\BaseUserDiscount;
use app\data\model\BaseUserPayment;
use app\data\model\BaseUserUpgrade;
use app\data\model\ShopGoods;
use app\data\model\ShopGoodsCate;
use app\data\model\ShopGoodsItem;
@ -138,7 +139,7 @@ class Goods extends Controller
$this->marks = ShopGoodsMark::items();
$this->cates = ShopGoodsCate::treeTable(true);
$this->trucks = ExpressService::instance()->templates();
$this->upgrades = UserUpgradeService::instance()->levels();
$this->upgrades = BaseUserUpgrade::items();
$this->payments = BaseUserPayment::mk()->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('type,code,name', 'code');
$this->discounts = BaseUserDiscount::mk()->where(['status' => 1, 'deleted' => 0])->order('sort desc,id desc')->column('id,name,items', 'id');
// 商品规格处理

View File

@ -2,6 +2,7 @@
namespace app\data\controller\user;
use app\data\model\BaseUserUpgrade;
use app\data\model\DataUser;
use app\data\service\UserAdminService;
use app\data\service\UserUpgradeService;
@ -25,7 +26,7 @@ class Admin extends Controller
public function index()
{
// 用户等级分组
[$ts, $ls] = [[], UserUpgradeService::instance()->levels()];
[$ts, $ls] = [[], BaseUserUpgrade::items()];
$ts['ta'] = ['vip' => '', 'name' => '全部用户', 'count' => 0];
foreach ($ls as $k => $v) $ts["t{$k}"] = ['vip' => $k, 'name' => $v['name'], 'count' => 0,];
$ts['to'] = ['vip' => '', 'name' => '其他用户', 'count' => 0];
@ -62,7 +63,7 @@ class Admin extends Controller
*/
protected function _page_filter(array &$data)
{
$this->upgrades = UserUpgradeService::instance()->levels();
$this->upgrades = BaseUserUpgrade::items();
UserAdminService::instance()->buildByUid($data, 'pid1', 'from');
}
@ -139,7 +140,7 @@ class Admin extends Controller
public function parent()
{
if ($this->request->isGet()) {
$this->upgrades = UserUpgradeService::instance()->levels();
$this->upgrades = BaseUserUpgrade::items();
$data = $this->_vali(['uuid.require' => '待操作UID不能为空']);
// 排除下级用户

View File

@ -2,6 +2,7 @@
namespace app\data\controller\user;
use app\data\model\BaseUserUpgrade;
use app\data\model\DataUser;
use app\data\model\DataUserBalance;
use app\data\service\UserAdminService;
@ -52,7 +53,7 @@ class Balance extends Controller
UserAdminService::instance()->buildByUid($data);
$uids = array_unique(array_column($data, 'create_by'));
$users = SystemUser::mk()->whereIn('id', $uids)->column('username', 'id');
$this->upgrades = UserUpgradeService::instance()->levels();
$this->upgrades = BaseUserUpgrade::items();
foreach ($data as &$vo) {
$vo['upgradeinfo'] = $this->upgrades[$vo['upgrade']] ?? [];
$vo['create_byname'] = $users[$vo['create_by']] ?? '';
@ -84,7 +85,7 @@ class Balance extends Controller
$data['code'] = CodeExtend::uniqidDate('20', 'B');
}
if ($this->request->isGet()) {
$this->upgrades = UserUpgradeService::instance()->levels();
$this->upgrades = BaseUserUpgrade::items();
}
if ($this->request->isPost()) {
$data['create_by'] = AdminService::instance()->getUserId();

View File

@ -2,6 +2,7 @@
namespace app\data\controller\user;
use app\data\model\BaseUserUpgrade;
use app\data\model\DataUser;
use app\data\model\DataUserRebate;
use app\data\model\ShopOrderItem;
@ -83,7 +84,7 @@ class Rebate extends Controller
$this->title = '用户返利配置';
if ($this->request->isGet()) {
$this->data = sysdata($this->skey);
$this->levels = UserUpgradeService::instance()->levels();
$this->levels = BaseUserUpgrade::items();
$this->fetch();
} else {
sysdata($this->skey, $this->request->post());

View File

@ -2,6 +2,7 @@
namespace app\data\model;
use app\data\service\RebateService;
use think\admin\Model;
/**
@ -14,15 +15,12 @@ class BaseUserUpgrade extends Model
/**
* 获取用户等级
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public static function items(): array
{
return static::mk()->where(['status' => 1])
->hidden(['id', 'utime', 'status', 'create_at'])
->order('number asc')->select()->toArray();
->order('number asc')->column('*', 'number');
}
/**
@ -34,6 +32,30 @@ class BaseUserUpgrade extends Model
return static::mk()->max('number', 0) + 1;
}
/**
* 规格化奖励配置
* @param mixed $value
* @return array
*/
public function getRebateRuleAttr($value): array
{
[$data, $rules] = [[], array_column(RebateService::PRIZES, 'code')];
foreach (is_string($value) ? str2arr($value, ',', $rules) : [] as $rule) {
$data[$rule] = RebateService::name($rule);
}
return $data;
}
/**
* 格式化奖励配置
* @param mixed $value
* @return string
*/
public function setRebateRuleAttr($value): string
{
return is_array($value) ? arr2str($value) : $value;
}
/**
* 格式化创建时间
* @param string $value

View File

@ -11,5 +11,13 @@ use think\admin\Model;
*/
class ShopGoodsItem extends Model
{
/**
* 格式化创建时间
* @param string $value
* @return string
*/
public function getCreateAtAttr(string $value): string
{
return format_datetime($value);
}
}

View File

@ -20,4 +20,14 @@ class ShopGoodsMark extends Model
$map = ['status' => 1];
return static::mk()->where($map)->order('sort desc,id desc')->column('name');
}
/**
* 格式化创建时间
* @param string $value
* @return string
*/
public function getCreateAtAttr(string $value): string
{
return format_datetime($value);
}
}

View File

@ -136,7 +136,7 @@ class OrderService extends Service
$items = $query->withoutField('id,uuid,status,deleted,create_at')->whereIn('order_no', $nobs)->select()->toArray();
// 关联用户数据
$fields = 'phone,username,nickname,headimg,status,vip_code,vip_name';
if ($data) UserAdminService::instance()->buildByUid($data, 'uuid', 'user', $fields);
UserAdminService::instance()->buildByUid($data, 'uuid', 'user', $fields);
if ($from) UserAdminService::instance()->buildByUid($data, 'puid1', 'from', $fields);
foreach ($data as &$vo) {
[$vo['sales'], $vo['truck'], $vo['items']] = [0, $trucks[$vo['order_no']] ?? [], []];

View File

@ -232,7 +232,7 @@ abstract class PaymentService
*/
public static function name(string $type): string
{
return self::TYPES[$type]['name'] ?? $type;
return static::TYPES[$type]['name'] ?? $type;
}
/**
@ -243,7 +243,7 @@ abstract class PaymentService
public static function getTypeAll(array $types = []): array
{
$binds = array_keys(UserAdminService::TYPES);
foreach (self::TYPES as $k => $v) if (isset($v['bind'])) {
foreach (static::TYPES as $k => $v) if (isset($v['bind'])) {
if (array_intersect($v['bind'], $binds)) $types[$k] = $v;
}
return $types;

View File

@ -417,7 +417,7 @@ class RebateService extends Service
* @param string $prize
* @return string
*/
public function name(string $prize): string
public static function name(string $prize): string
{
return self::PRIZES[$prize]['name'] ?? $prize;
}

View File

@ -17,16 +17,6 @@ use think\admin\Service;
class UserUpgradeService extends Service
{
/**
* 获取用户等级数据
* @return array
*/
public static function levels(): array
{
$model = BaseUserUpgrade::mk()->where(['status' => 1]);
return $model->order('number asc')->column('*', 'number');
}
/**
* 尝试绑定上级代理
* @param integer $uuid 用户UID
@ -86,7 +76,7 @@ class UserUpgradeService extends Service
$user = DataUser::mk()->where(['id' => $uuid])->find();
if (empty($user)) return true;
// 初始化等级参数
$levels = $this->levels();
$levels = BaseUserUpgrade::items();
[$vipName, $vipCode, $vipTeam] = [$levels[0]['name'] ?? '普通用户', 0, []];
// 统计用户数据
foreach ($levels as $key => $level) if ($level['upgrade_team'] === 1) $vipTeam[] = $key;

View File

@ -35,9 +35,9 @@
// 初始化图片背景
cropper = new Cropper(image, options = {
aspectRatio: 1, ready() {
viewMode: 1, aspectRatio: 1, ready: function () {
if (typeof defaData === 'object') cropper.setData(defaData);
}, crop() {
}, crop: function () {
$('#inputImage').val(image.src);
$('#inputData').val(JSON.stringify(cropper.getData()));
},

View File

@ -146,7 +146,7 @@
<fieldset class="layui-form-item">
<legend><span class="layui-badge layui-bg-cyan">奖利规则</span></legend>
<div class="notselect relative">
{foreach $prizes as $prize}{if isset($vo.rebate_rule) && is_array($vo.rebate_rule) && in_array($prize.code, $vo.rebate_rule)}
{foreach $prizes as $prize}{if isset($vo.rebate_rule) && is_array($vo.rebate_rule) && isset($vo.rebate_rule[$prize.code])}
<label class="think-checkbox"><input lay-ignore name="rebate_rule[]" type="checkbox" value="{$prize.code}" checked> {$prize.name}</label>
{else}
<label class="think-checkbox"><input lay-ignore name="rebate_rule[]" type="checkbox" value="{$prize.code}"> {$prize.name}</label>

View File

@ -72,7 +72,7 @@
},
{
field: 'rebate_rule', title: '奖利规则', align: 'center', minWidth: 100, templet: function (d) {
return (d.html = ''), (d.rebate_rule || []).forEach(function (rule) {
return (d.html = ''), layui.each(d.rebate_rule || {}, function (k, rule) {
d.html += laytpl('<span class="layui-badge layui-bg-gray">{{d.v}}</span>').render({v: rule});
}), d.html || '-';
}