mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2026-07-06 08:11:12 +08:00
Compare commits
7 Commits
64fd6cdc1a
...
f33cdcc5de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f33cdcc5de | ||
|
|
d79b93b9e1 | ||
|
|
2ac2f95e1f | ||
|
|
4435dcf61a | ||
|
|
57fa2645dc | ||
|
|
b765e011a2 | ||
|
|
9d5b9523c2 |
@ -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;
|
||||
});
|
||||
|
||||
// 设置表格行宽高,需要设置最后的行或列宽高,否则部分不生效 ???
|
||||
|
||||
@ -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));
|
||||
}
|
||||
|
||||
|
||||
@ -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'];
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
/**
|
||||
* 文章内容管理
|
||||
|
||||
@ -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');
|
||||
// 商品规格处理
|
||||
|
||||
@ -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不能为空!']);
|
||||
|
||||
// 排除下级用户
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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']] ?? [], []];
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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()));
|
||||
},
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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 || '-';
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user