This commit is contained in:
尖叫 2023-11-10 10:42:01 +08:00
parent 4272459118
commit 9bda049577
3 changed files with 416 additions and 352 deletions

276
.idea/workspace.xml generated
View File

@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BookmarkManager">
<bookmark url="file://$PROJECT_DIR$/application/api/controller/Account.php" />
</component>
<component name="ChangeListManager">
<list default="true" id="4256ed8b-19a0-40ba-b9ef-b8e8a4c1f799" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/application/common/model/NoticeSetting.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/common/model/NoticeSetting.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/application/admin/logic/UserLogic.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/admin/logic/UserLogic.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/application/common/behavior/Notice.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/common/behavior/Notice.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/application/common/server/WxMessageServer.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/common/server/WxMessageServer.php" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@ -19,10 +25,19 @@
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/.gitignore">
<entry file="file://$PROJECT_DIR$/application/common/logic/PayNotifyLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="4" column="20" lean-forward="true" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
<state relative-caret-position="462">
<caret line="123" column="27" lean-forward="true" selection-start-line="123" selection-start-column="27" selection-end-line="123" selection-end-column="27" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/application/common/server/WxMessageServer.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="729">
<caret line="88" column="13" selection-start-line="88" selection-start-column="13" selection-end-line="88" selection-end-column="13" />
</state>
</provider>
</entry>
@ -30,8 +45,8 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/behavior/Notice.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="289">
<caret line="62" column="57" lean-forward="true" selection-start-line="62" selection-start-column="57" selection-end-line="62" selection-end-column="57" />
<state relative-caret-position="654">
<caret line="82" column="60" selection-start-line="82" selection-start-column="60" selection-end-line="82" selection-end-column="60" />
</state>
</provider>
</entry>
@ -39,71 +54,35 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/api/logic/LoginLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<caret line="610" column="30" selection-start-line="610" selection-start-column="30" selection-end-line="610" selection-end-column="30" />
<state relative-caret-position="400">
<caret line="51" column="19" lean-forward="true" selection-start-line="51" selection-start-column="19" selection-end-line="51" selection-end-column="19" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/server/WxMessageServer.php">
<entry file="file://$PROJECT_DIR$/application/admin/controller/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="78" column="47" lean-forward="true" selection-start-line="78" selection-start-column="47" selection-end-line="78" selection-end-column="47" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/admin/logic/UserLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="56" column="20" selection-start-line="56" selection-start-column="20" selection-end-line="56" selection-end-column="20" />
<caret line="436" selection-start-line="436" selection-end-line="436" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/tags.php">
<entry file="file://$PROJECT_DIR$/application/common/logic/AccountLogLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="525">
<caret line="54" column="34" selection-start-line="54" selection-start-column="34" selection-end-line="54" selection-end-column="34" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/logic/PayNotifyLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612">
<caret line="129" column="59" lean-forward="true" selection-start-line="129" selection-start-column="59" selection-end-line="129" selection-end-column="59" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/model/OrderLog.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<caret line="36" column="10" selection-start-line="36" selection-start-column="10" selection-end-line="36" selection-end-column="10" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/model/Order.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4336">
<caret line="38" column="10" selection-start-line="38" selection-start-column="10" selection-end-line="38" selection-end-column="10" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/application/common/model/NoticeSetting.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1150">
<caret line="90" column="31" lean-forward="true" selection-start-line="90" selection-start-column="31" selection-end-line="90" selection-end-column="31" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/application/common/model/Pay.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<caret line="40" column="21" selection-start-line="40" selection-start-column="10" selection-end-line="40" selection-end-column="21" />
<state relative-caret-position="389">
<caret line="62" column="45" lean-forward="true" selection-start-line="62" selection-start-column="45" selection-end-line="62" selection-end-column="45" />
</state>
</provider>
</entry>
@ -121,6 +100,10 @@
<find>余额</find>
<find>support</find>
<find>余额支付</find>
<find>codeurl</find>
<find>小程序</find>
<find>authLogin</find>
<find>adjustaccount</find>
</findStrings>
<replaceStrings>
<replace />
@ -139,6 +122,9 @@
<option value="$PROJECT_DIR$/application/common/logic/PayNotifyLogic.php" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/application/common/model/NoticeSetting.php" />
<option value="$PROJECT_DIR$/application/common/behavior/Notice.php" />
<option value="$PROJECT_DIR$/application/admin/logic/UserLogic.php" />
<option value="$PROJECT_DIR$/application/common/server/WxMessageServer.php" />
</list>
</option>
</component>
@ -207,8 +193,8 @@
</include_path>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="704" />
<option name="y" value="149" />
<option name="x" value="274" />
<option name="y" value="32" />
<option name="width" value="1400" />
<option name="height" value="1000" />
</component>
@ -234,14 +220,20 @@
<item name="cxybn" type="b2602c69:ProjectViewProjectNode" />
<item name="cxybn" type="462c0819:PsiDirectoryNode" />
<item name="application" type="462c0819:PsiDirectoryNode" />
<item name="api" type="462c0819:PsiDirectoryNode" />
<item name="admin" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="cxybn" type="b2602c69:ProjectViewProjectNode" />
<item name="cxybn" type="462c0819:PsiDirectoryNode" />
<item name="application" type="462c0819:PsiDirectoryNode" />
<item name="api" type="462c0819:PsiDirectoryNode" />
<item name="controller" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="cxybn" type="b2602c69:ProjectViewProjectNode" />
<item name="cxybn" type="462c0819:PsiDirectoryNode" />
<item name="application" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="behavior" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
@ -279,18 +271,19 @@
<option name="presentableId" value="Default" />
<updated>1698048469265</updated>
<workItem from="1698048470415" duration="2404000" />
<workItem from="1698909025553" duration="4065000" />
<workItem from="1698909025553" duration="7497000" />
<workItem from="1699340373352" duration="6798000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="6469000" />
<option name="totallyTimeSpent" value="16699000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="true" />
<layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.18017058" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.20095949" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
@ -392,13 +385,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/api/controller/WeChat.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200">
<caret line="24" column="6" selection-start-line="24" selection-start-column="6" selection-end-line="24" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/api/controller/Subscribe.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="450">
@ -427,20 +413,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/Client_.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-261">
<caret line="25" column="10" selection-start-line="25" selection-start-column="10" selection-end-line="25" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/overtrue/wechat/src/OfficialAccount/TemplateMessage/Client.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="136" column="20" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/tags.php">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@ -486,66 +458,136 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/server/WxMessageServer.php">
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="56" column="20" selection-start-line="56" selection-start-column="20" selection-end-line="56" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/api/logic/LoginLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<caret line="610" column="30" selection-start-line="610" selection-start-column="30" selection-end-line="610" selection-end-column="30" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/behavior/Notice.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="289">
<caret line="62" column="57" lean-forward="true" selection-start-line="62" selection-start-column="57" selection-end-line="62" selection-end-column="57" />
<state relative-caret-position="100">
<caret line="4" column="20" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/OrderLog.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<state relative-caret-position="475">
<caret line="36" column="10" selection-start-line="36" selection-start-column="10" selection-end-line="36" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/Order.php">
<entry file="file://$PROJECT_DIR$/application/api/logic/WeChatLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-4336">
<caret line="38" column="10" selection-start-line="38" selection-start-column="10" selection-end-line="38" selection-end-column="10" />
<state relative-caret-position="500">
<caret line="41" column="31" selection-start-line="41" selection-start-column="31" selection-end-line="41" selection-end-column="31" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/overtrue/wechat/src/BasicService/Jssdk/Client.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1725">
<caret line="79" column="20" selection-start-line="79" selection-start-column="20" selection-end-line="79" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/Pay.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="329">
<state relative-caret-position="575">
<caret line="40" column="21" selection-start-line="40" selection-start-column="10" selection-end-line="40" selection-end-column="21" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<entry file="file://$PROJECT_DIR$/application/api/controller/WeChat.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="4" column="20" lean-forward="true" selection-start-line="4" selection-start-column="20" selection-end-line="4" selection-end-column="20" />
<state relative-caret-position="475">
<caret line="35" column="28" selection-start-line="35" selection-start-column="12" selection-end-line="35" selection-end-column="28" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/logic/PayNotifyLogic.php">
<entry file="file://$PROJECT_DIR$/application/common/model/Order.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="612">
<caret line="129" column="59" lean-forward="true" selection-start-line="129" selection-start-column="59" selection-end-line="129" selection-end-column="59" />
<state relative-caret-position="25">
<caret line="38" column="10" selection-start-line="38" selection-start-column="10" selection-end-line="38" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/overtrue/wechat/src/OfficialAccount/TemplateMessage/Client.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="136" column="20" selection-start-line="136" selection-start-column="20" selection-end-line="136" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/api/controller/Account.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="522">
<caret line="238" column="36" selection-start-line="238" selection-start-column="36" selection-end-line="238" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/overtrue/wechat/src/MiniProgram/Auth/Client.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="775">
<caret line="38" column="49" selection-start-line="38" selection-start-column="31" selection-end-line="38" selection-end-column="49" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/api/logic/LoginLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="400">
<caret line="51" column="19" lean-forward="true" selection-start-line="51" selection-start-column="19" selection-end-line="51" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/controller/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="472">
<caret line="78" column="47" lean-forward="true" selection-start-line="78" selection-start-column="47" selection-end-line="78" selection-end-column="47" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/logic/AccountLogLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="389">
<caret line="62" column="45" lean-forward="true" selection-start-line="62" selection-start-column="45" selection-end-line="62" selection-end-column="45" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/NoticeSetting.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1150">
<caret line="90" column="31" lean-forward="true" selection-start-line="90" selection-start-column="31" selection-end-line="90" selection-end-column="31" />
<state relative-caret-position="-263">
<caret line="51" column="10" selection-start-line="51" selection-start-column="10" selection-end-line="51" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/model/Client_.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="250">
<caret line="26" column="10" selection-start-line="26" selection-start-column="10" selection-end-line="26" selection-end-column="10" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/admin/logic/UserLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="436" selection-start-line="436" selection-end-line="436" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/logic/PayNotifyLogic.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462">
<caret line="123" column="27" lean-forward="true" selection-start-line="123" selection-start-column="27" selection-end-line="123" selection-end-column="27" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/behavior/Notice.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="654">
<caret line="82" column="60" selection-start-line="82" selection-start-column="60" selection-end-line="82" selection-end-column="60" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/application/common/server/WxMessageServer.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="729">
<caret line="88" column="13" selection-start-line="88" selection-start-column="13" selection-end-line="88" selection-end-column="13" />
</state>
</provider>
</entry>

View File

@ -23,6 +23,7 @@ use app\common\logic\AccountLogLogic;
use app\common\logic\LogicBase;
use app\common\logic\UserLevelLogic;
use app\common\model\AccountLog;
use app\common\model\NoticeSetting;
use app\common\model\Order;
use app\common\model\Pay;
use app\common\model\User;
@ -30,6 +31,7 @@ use app\common\model\UserLevel;
use app\common\server\UrlServer;
use think\Db;
use think\Exception;
use think\Hook;
class UserLogic extends LogicBase
{
@ -41,39 +43,40 @@ class UserLogic extends LogicBase
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public static function lists($get){
public static function lists($get)
{
$user = new User();
$where = [];
$where[] = ['del','=', '0'];
$where[] = ['del', '=', '0'];
//查询
if(isset($get['keyword']) && $get['keyword']){
$where[] = [$get['keyword_type'],'like','%'.$get['keyword'].'%'];
if (isset($get['keyword']) && $get['keyword']) {
$where[] = [$get['keyword_type'], 'like', '%' . $get['keyword'] . '%'];
}
//等级查询
if(isset($get['level']) && $get['level'] != ''){
$where[] = ['level','=',$get['level']];
if (isset($get['level']) && $get['level'] != '') {
$where[] = ['level', '=', $get['level']];
}
//分组查询
if(isset($get['group_id']) && $get['group_id']){
$where[] = ['group_id','=',$get['group_id']];
if (isset($get['group_id']) && $get['group_id']) {
$where[] = ['group_id', '=', $get['group_id']];
}
//消费金额
if(isset($get['total_amount_start']) && $get['total_amount_start']){
$where[] = ['total_order_amount','>=',$get['total_amount_start']];
if (isset($get['total_amount_start']) && $get['total_amount_start']) {
$where[] = ['total_order_amount', '>=', $get['total_amount_start']];
}
if(isset($get['total_amount_end']) && $get['total_amount_end']){
$where[] = ['total_order_amount','<=',$get['total_amount_end']];
if (isset($get['total_amount_end']) && $get['total_amount_end']) {
$where[] = ['total_order_amount', '<=', $get['total_amount_end']];
}
//注册时间
if(isset($get['start_time']) && $get['start_time']!=''){
$where[] = ['create_time','>=',strtotime($get['start_time'])];
if (isset($get['start_time']) && $get['start_time'] != '') {
$where[] = ['create_time', '>=', strtotime($get['start_time'])];
}
if(isset($get['end_time']) && $get['end_time']!=''){
$where[] = ['create_time','<=',strtotime($get['end_time'])];
if (isset($get['end_time']) && $get['end_time'] != '') {
$where[] = ['create_time', '<=', strtotime($get['end_time'])];
}
$user_count = $user
@ -82,28 +85,28 @@ class UserLogic extends LogicBase
$user_list = $user
->where($where)
->field('password,pay_password,salt',true)
->page($get['page'],$get['limit'])
->field('password,pay_password,salt', true)
->page($get['page'], $get['limit'])
->order('id desc')
->select()->toArray();
//会员分组
$user_group = Db::name('user_group')->where(['del'=>0])->column('name','id');
$user_group = Db::name('user_group')->where(['del' => 0])->column('name', 'id');
//会员等级
$user_level = Db::name('user_level')->where(['del'=>0])->column('name','id');
$user_level = Db::name('user_level')->where(['del' => 0])->column('name', 'id');
$all_user_list = $user->where(['del'=>0])->column('sn,nickname,avatar,mobile,level','id');
$group_list = db::name('user_group')->where(['del'=>0])->column('name','id');
$all_user_list = $user->where(['del' => 0])->column('sn,nickname,avatar,mobile,level', 'id');
$group_list = db::name('user_group')->where(['del' => 0])->column('name', 'id');
foreach ($user_list as &$item){
foreach ($user_list as &$item) {
$item['total_amount'] = round($item['user_money'] + $item['earnings'], 2);
$item['group_name'] = '-';
$item['level_name'] = '无等级';
//会员所属分组
if(isset($user_group[$item['group_id']])){
if (isset($user_group[$item['group_id']])) {
$item['group_name'] = $user_group[$item['group_id']];
}
if(isset($user_level[$item['level']])){
if (isset($user_level[$item['level']])) {
$item['level_name'] = $user_level[$item['level']];
}
@ -124,45 +127,45 @@ class UserLogic extends LogicBase
])->count();
if(isset($group_list[$item['group_id']])){
if (isset($group_list[$item['group_id']])) {
$item['group_name'] = $group_list[$item['group_id']];
}
}
return ['count'=>$user_count , 'lists'=>$user_list];
return ['count' => $user_count, 'lists' => $user_list];
}
public static function exportFile($get)
{
$where[] = ['del','=', '0'];
$where[] = ['del', '=', '0'];
//查询
if(isset($get['keyword']) && $get['keyword']){
$where[] = [$get['keyword_type'],'like','%'.$get['keyword'].'%'];
if (isset($get['keyword']) && $get['keyword']) {
$where[] = [$get['keyword_type'], 'like', '%' . $get['keyword'] . '%'];
}
//等级查询
if(isset($get['level']) && $get['level'] != ''){
$where[] = ['level','=',$get['level']];
if (isset($get['level']) && $get['level'] != '') {
$where[] = ['level', '=', $get['level']];
}
//分组查询
if(isset($get['group_id']) && $get['group_id']){
$where[] = ['group_id','=',$get['group_id']];
if (isset($get['group_id']) && $get['group_id']) {
$where[] = ['group_id', '=', $get['group_id']];
}
//消费金额
if(isset($get['total_amount_start']) && $get['total_amount_start']){
$where[] = ['total_order_amount','>=',$get['total_amount_start']];
if (isset($get['total_amount_start']) && $get['total_amount_start']) {
$where[] = ['total_order_amount', '>=', $get['total_amount_start']];
}
if(isset($get['total_amount_end']) && $get['total_amount_end']){
$where[] = ['total_order_amount','<=',$get['total_amount_end']];
if (isset($get['total_amount_end']) && $get['total_amount_end']) {
$where[] = ['total_order_amount', '<=', $get['total_amount_end']];
}
//注册时间
if(isset($get['start_time']) && $get['start_time']!=''){
$where[] = ['create_time','>=',strtotime($get['start_time'])];
if (isset($get['start_time']) && $get['start_time'] != '') {
$where[] = ['create_time', '>=', strtotime($get['start_time'])];
}
if(isset($get['end_time']) && $get['end_time']!=''){
$where[] = ['create_time','<=',strtotime($get['end_time'])];
if (isset($get['end_time']) && $get['end_time'] != '') {
$where[] = ['create_time', '<=', strtotime($get['end_time'])];
}
$user_list = Db::name('user')->where($where)
@ -170,22 +173,22 @@ class UserLogic extends LogicBase
->select();
//会员分组
$user_group = Db::name('user_group')->where(['del'=>0])->column('name','id');
$user_group = Db::name('user_group')->where(['del' => 0])->column('name', 'id');
//会员等级
$user_level = Db::name('user_level')->where(['del'=>0])->column('name','id');
$user_level = Db::name('user_level')->where(['del' => 0])->column('name', 'id');
// 所有会员信息
$all_user_list = User::where(['del'=>0])->column('sn,nickname,mobile,level','id');
$all_user_list = User::where(['del' => 0])->column('sn,nickname,mobile,level', 'id');
$exportData = [];
foreach ($user_list as $item){
foreach ($user_list as $item) {
$groupName = '-';
$levelName = '无等级';
//会员所属分组
if(isset($user_group[$item['group_id']])){
if (isset($user_group[$item['group_id']])) {
$groupName = $user_group[$item['group_id']];
}
if(isset($user_level[$item['level']])){
if (isset($user_level[$item['level']])) {
$levelName = $user_level[$item['level']];
}
@ -194,15 +197,15 @@ class UserLogic extends LogicBase
$referrer_sn = '';
$referrer_mobile = '';
$referrer_level_name = '-';
if(isset($all_user_list[$item['first_leader']])){
if (isset($all_user_list[$item['first_leader']])) {
$referrer_user = $all_user_list[$item['first_leader']];
$referrer_nickname = $referrer_user['nickname'];
$referrer_sn = $referrer_user['sn'];
$referrer_mobile = $referrer_user['mobile'];
if(isset($user_level[$referrer_user['level']])){
$referrer_level_name =$user_level[$referrer_user['level']];
if (isset($user_level[$referrer_user['level']])) {
$referrer_level_name = $user_level[$referrer_user['level']];
}
$referrer_user_info.= '【昵称:'.$referrer_nickname.' 编号:'.$referrer_sn. ' 手机:'. $referrer_mobile . ' 等级:'. $referrer_level_name.'】';
$referrer_user_info .= '【昵称:' . $referrer_nickname . ' 编号:' . $referrer_sn . ' 手机:' . $referrer_mobile . ' 等级:' . $referrer_level_name . '】';
}
$loginTime = date('Y-m-d H:i:s', $item['login_time']);
@ -211,7 +214,7 @@ class UserLogic extends LogicBase
$exportTitle = ['会员编号', '会员昵称', '会员等级', '会员分组', '推荐人信息', '消费金额', '账户余额', '积分', '最后登录时间'];
$exportExt = 'xls';
return ['exportTitle'=> $exportTitle, 'exportData' => $exportData, 'exportExt'=>$exportExt, 'exportName'=>'会员列表'.date('Y-m-d H:i:s')];
return ['exportTitle' => $exportTitle, 'exportData' => $exportData, 'exportExt' => $exportExt, 'exportName' => '会员列表' . date('Y-m-d H:i:s')];
}
/**
@ -221,50 +224,51 @@ class UserLogic extends LogicBase
* @param bool $expenditure 是否显示会员消费
* @return User|mixed
*/
public static function getUser($id,$getdata = false,$expenditure = false){
public static function getUser($id, $getdata = false, $expenditure = false)
{
$user = User::get($id);
$user->append(['level_name','group_name']);
if($getdata){
$user->append(['level_name', 'group_name']);
if ($getdata) {
$user = $user->getData();
if($user['birthday']) $user['birthday'] = date('Y-m-d',$user['birthday']);
if ($user['birthday']) $user['birthday'] = date('Y-m-d', $user['birthday']);
}
$user['abs_avatar'] = UrlServer::getFileUrl($user['avatar']);
if($expenditure){
if ($expenditure) {
//本月的消费金额
$month_amount = Db::name('order')
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID])
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->where(['user_id' => $id, 'pay_status' => Pay::ISPAID])
->whereTime('create_time', 'month')
->sum('order_amount');
//本月的订单笔数
$month_num = Db::name('order')
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID])
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->where(['user_id' => $id, 'pay_status' => Pay::ISPAID])
->whereTime('create_time', 'month')
->count();
//累计消费笔数
$total_num =Db::name('order')
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID])
$total_num = Db::name('order')
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->where(['user_id' => $id, 'pay_status' => Pay::ISPAID])
->sum('order_amount');
$avg_amount = Db::name('order')
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->where(['user_id'=>$id,'pay_status'=>Pay::ISPAID])
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->where(['user_id' => $id, 'pay_status' => Pay::ISPAID])
->avg('order_amount');
$user['month_amount'] = '¥'.round($month_amount,2);
$user['month_num'] = round($month_num,2);
$user['total_num'] = round($total_num,2);
$user['avg_amount'] = '¥'.round($avg_amount,2);
$user['month_amount'] = '¥' . round($month_amount, 2);
$user['month_num'] = round($month_num, 2);
$user['total_num'] = round($total_num, 2);
$user['avg_amount'] = '¥' . round($avg_amount, 2);
//分销会员
$user['distribution_tips'] = '否';
$user['superior_referrer'] = '-';
$user['superior_referrer_sn'] = '-';
if($user['is_distribution']){
if ($user['is_distribution']) {
$user['distribution_tips'] = '是';
$superior_referrer = Db::name('user')->where(['id'=>$user['first_leader']])->field('nickname,sn')->findOrEmpty();
$superior_referrer = Db::name('user')->where(['id' => $user['first_leader']])->field('nickname,sn')->findOrEmpty();
$user['superior_referrer'] = '-';
$user['superior_referrer_sn'] = '-';
if($superior_referrer) {
if ($superior_referrer) {
$user['superior_referrer'] = $superior_referrer['nickname'];
$user['superior_referrer_sn'] = $superior_referrer['sn'];
}
@ -274,11 +278,13 @@ class UserLogic extends LogicBase
}
return $user;
}
/*
* 批量设置会员分组
*/
public static function setGroup($post){
return Db::name('user')->where(['id'=>$post['user_ids']])->update(['group_id'=>$post['group_id']]);
public static function setGroup($post)
{
return Db::name('user')->where(['id' => $post['user_ids']])->update(['group_id' => $post['group_id']]);
}
public static function fans($params)
@ -292,8 +298,8 @@ class UserLogic extends LogicBase
if ($params['type'] == 'two') {
$where[] = ['second_leader', '=', $params['id']];
}
if(isset($params['keyword']) && !empty($params['keyword'])) {
$where[] = [$params['field'], 'like', '%'. $params['keyword'] . '%'];
if (isset($params['keyword']) && !empty($params['keyword'])) {
$where[] = [$params['field'], 'like', '%' . $params['keyword'] . '%'];
}
$lists = User::field('id,sn,nickname,avatar,first_leader')
@ -306,7 +312,7 @@ class UserLogic extends LogicBase
->where($where)
->count();
foreach($lists as &$item) {
foreach ($lists as &$item) {
$item['avatar'] = empty($item['avatar']) ? '' : UrlServer::getFileUrl($item['avatar']);
$item['first_leader_info'] = User::getUserInfo($item['first_leader']);
$item['fans'] = User::where([
@ -323,7 +329,8 @@ class UserLogic extends LogicBase
/*
* 用户账户调整
*/
public static function adjustAccount($post_data){
public static function adjustAccount($post_data)
{
Db::startTrans();
try {
$update_data = [];
@ -409,13 +416,25 @@ class UserLogic extends LogicBase
}
Db::name('user')->where('id', $post_data['id'])->update($update_data);
foreach ($account_log as $item => $value){
AccountLogLogic::AccountRecord($post_data['id'],$value['number'],$value['change_type'],$value['source_type'],$value['remark']);
foreach ($account_log as $item => $value) {
AccountLogLogic::AccountRecord($post_data['id'], $value['number'], $value['change_type'], $value['source_type'], $value['remark']);
}
if (isset($post_data['growth_handle'])) {
UserLevelLogic::updateUserLevel($post_data['id']);
}
Db::commit();
//金额调整 发送推送
if ($post_data['type'] == 'money') {
Hook::listen('notice', [
'user_id' => $post_data['id'],
'type' => 1,
'scene' => NoticeSetting::MONEY_PAY_NOTICE,
'money' => $post_data['money'],
]);
}
return true;
} catch (Exception $e) {
Db::rollback();
@ -424,15 +443,18 @@ class UserLogic extends LogicBase
}
public static function adjustLevel($post_data){
public static function adjustLevel($post_data)
{
return Db::name('user')->where('id',$post_data['id'])->update(['level'=>$post_data['level']]);
return Db::name('user')->where('id', $post_data['id'])->update(['level' => $post_data['level']]);
}
/*
* 获取分组
*/
public static function getGroupList(){
return Db::name('user_group')->where(['del'=>0])->field('id,name')->select();
public static function getGroupList()
{
return Db::name('user_group')->where(['del' => 0])->field('id,name')->select();
}
/*
@ -446,7 +468,8 @@ class UserLogic extends LogicBase
/*
* 编辑会员
*/
public static function edit($post){
public static function edit($post)
{
$user = User::get($post['id']);
if (!empty($post['password'])) {
//生成密码
@ -469,7 +492,7 @@ class UserLogic extends LogicBase
->where(['user_id' => $user['id']])
->select();
if(count($tokens) > 0) {
if (count($tokens) > 0) {
foreach ($tokens as $item) {
$token_cache = new TokenCache($item['token']);
$token_cache->del();
@ -480,19 +503,20 @@ class UserLogic extends LogicBase
return $user->allowField(true)->save($post);
}
public static function getList($get){
switch ($get['type']){
public static function getList($get)
{
switch ($get['type']) {
case 0://下单明细
$order = new Order();
$count = $order->alias('o')
->where(['user_id'=>$get['user_id']])
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->where(['user_id' => $get['user_id']])
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->count();
$list = $order->alias('o')
->where(['user_id'=>$get['user_id']])
->where('order_status','not in',[Order::STATUS_CLOSE,Order::STATUS_WAIT_PAY])
->page($get['page'],$get['limit'])
->where(['user_id' => $get['user_id']])
->where('order_status', 'not in', [Order::STATUS_CLOSE, Order::STATUS_WAIT_PAY])
->page($get['page'], $get['limit'])
->order('id desc')
->field('o.id,order_sn,total_num,pay_time,total_amount,order_amount,discount_amount,
o.create_time,consignee,province,city,district,o.address,mobile')
@ -500,54 +524,54 @@ class UserLogic extends LogicBase
break;
case 1://积分明细
$account_log =new AccountLog();
$account_log = new AccountLog();
$count = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::integral_change])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::integral_change])
->count();
$list = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::integral_change])
->page($get['page'],$get['limit'])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::integral_change])
->page($get['page'], $get['limit'])
->order('id desc')
->select();
break;
case 2://签到明细
$account_log =new AccountLog();
$account_log = new AccountLog();
$count = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::sign_in_integral])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::sign_in_integral])
->count();
$list = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::sign_in_integral])
->page($get['page'],$get['limit'])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::sign_in_integral])
->page($get['page'], $get['limit'])
->order('id desc')
->select();
break;
case 3://余额明细
$account_log = new AccountLog();
$count = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::money_change])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::money_change])
->count();
$list = $account_log
->where(['user_id'=>$get['user_id'],'source_type'=>AccountLog::money_change])
->page($get['page'],$get['limit'])
->where(['user_id' => $get['user_id'], 'source_type' => AccountLog::money_change])
->page($get['page'], $get['limit'])
->order('id desc')
->select();
break;
case 4://推广明细
$count = 1;
$first_leader = Db::name('user')->where(['id'=>$get['user_id']])->value('first_leader');
$first_leader = Db::name('user')->where(['id' => $get['user_id']])->value('first_leader');
$list = [];
if($first_leader){
if ($first_leader) {
$user = new User();
$list = $user
->where(['id'=>$first_leader])
->where(['id' => $first_leader])
->field('id,sn,nickname,mobile,avatar,level,sex,create_time,total_order_amount,user_money,user_integral')
->order('id desc')
->select();
$level_list = Db::name('user_level')->where(['del'=>0])->column('name','id');
$level_list = Db::name('user_level')->where(['del' => 0])->column('name', 'id');
foreach ($list as &$item) {
$item['avatar'] = UrlServer::getFileUrl($item['avatar']);
$item['level_name'] = '-';
if(isset($level_list[$item['level']])){
if (isset($level_list[$item['level']])) {
$item['level_name'] = $level_list[$item['level']];
}
}
@ -555,26 +579,26 @@ class UserLogic extends LogicBase
break;
case 5://收货地址
$count = Db::name('user_address')
->where(['user_id'=>$get['user_id'],'del'=>0])
->where(['user_id' => $get['user_id'], 'del' => 0])
->count();
$list = Db::name('user_address')
->where(['user_id'=>$get['user_id'],'del'=>0])
->where(['user_id' => $get['user_id'], 'del' => 0])
->order('id desc')
->select();
foreach ($list as &$item){
foreach ($list as &$item) {
$item['default'] = '否';
$region = Db::name('dev_region')
->where('id', 'IN', [$item['province_id'], $item['city_id'], $item['district_id']])->order('level asc')->column('name');
$region_desc = implode('', $region);
$item['address'] = $region_desc.$item['address'];
if($item['is_default']){
$item['address'] = $region_desc . $item['address'];
if ($item['is_default']) {
$item['default'] = '是';
}
}
break;
}
return ['count'=>$count , 'lists'=>$list];
return ['count' => $count, 'lists' => $list];
}
/**
@ -584,11 +608,11 @@ class UserLogic extends LogicBase
{
$where = [];
// 开始时间
if(!empty($get['start_time'])) {
if (!empty($get['start_time'])) {
$where[] = ['create_time', '>=', strtotime($get['start_time'])];
}
// 结束时间
if(!empty($get['end_time'])) {
if (!empty($get['end_time'])) {
$where[] = ['create_time', '<=', strtotime($get['end_time'])];
}
@ -601,7 +625,7 @@ class UserLogic extends LogicBase
$count = Db::name('user_transfer')->count();
// 获取转账人及收款人信息
foreach($list as &$item) {
foreach ($list as &$item) {
$transferFromInfo = Db::name('user')->alias('u')
->field('u.sn, u.nickname, u.avatar, ul.name as user_level_name')
->leftJoin('user_level ul', 'u.level=ul.id')
@ -633,7 +657,7 @@ class UserLogic extends LogicBase
$where[] = ['del', '=', 0];
// 用户信息
if (isset($params['keyword']) && !empty($params['keyword'])) {
$where[] = ['sn|nickname', 'like', '%'. $params['keyword'] .'%'];
$where[] = ['sn|nickname', 'like', '%' . $params['keyword'] . '%'];
}
$lists = \app\common\model\User::field('id,sn,nickname,id as distribution')
@ -653,7 +677,7 @@ class UserLogic extends LogicBase
{
Db::startTrans();
try {
switch($params['type']) {
switch ($params['type']) {
// 指定推荐人
case 'assign':
$formatData = self::assignFirstLeader($params);
@ -667,7 +691,7 @@ class UserLogic extends LogicBase
$user = User::findOrEmpty($params['id']);
// 旧关系链
if (!empty($user->ancestor_relation)) {
$old_ancestor_relation = $user->id . ',' .$user->ancestor_relation;
$old_ancestor_relation = $user->id . ',' . $user->ancestor_relation;
} else {
$old_ancestor_relation = $user->id;
}
@ -698,7 +722,7 @@ class UserLogic extends LogicBase
Db::commit();
return true;
} catch(\Exception $e) {
} catch (\Exception $e) {
Db::rollback();
self::$error = $e->getMessage();
return false;
@ -714,14 +738,14 @@ class UserLogic extends LogicBase
->where('id', $params['first_id'])
->findOrEmpty()
->toArray();
if(empty($firstLeader)) {
if (empty($firstLeader)) {
throw new \think\Exception('推荐人不存在');
}
if ($params['first_id'] == $params['id']) {
throw new \think\Exception('不能指定上级是自己');
}
$ancestorArr = explode(',', trim($firstLeader['ancestor_relation']));
if(!empty($ancestorArr) && in_array($params['id'], $ancestorArr)) {
if (!empty($ancestorArr) && in_array($params['id'], $ancestorArr)) {
throw new \think\Exception('不能指定推荐人为自己的下级');
}
@ -733,7 +757,7 @@ class UserLogic extends LogicBase
$third_leader_id = $firstLeader['second_leader'];
// 拼接关系链
$firstLeader['ancestor_relation'] = $firstLeader['ancestor_relation'] ?? ''; // 清空null值及0
$my_ancestor_relation = $first_leader_id. ',' . $firstLeader['ancestor_relation'];
$my_ancestor_relation = $first_leader_id . ',' . $firstLeader['ancestor_relation'];
// 去除两端逗号
$my_ancestor_relation = trim($my_ancestor_relation, ',');
$data = [
@ -762,11 +786,11 @@ class UserLogic extends LogicBase
{
$user = User::field('id,sn,level,nickname,avatar,birthday,group_id,sex,mobile,create_time,login_time,user_money,user_growth,earnings,first_leader')
->findOrEmpty($id);
if($user->isEmpty()) {
if ($user->isEmpty()) {
return [];
}
$user =$user->toArray();
$user = $user->toArray();
$orderWhere = [
'user_id' => $id,
'del' => 0,
@ -785,7 +809,7 @@ class UserLogic extends LogicBase
$user['order_num'] = Order::where($orderWhere)->count();
// 总消费金额
$user['total_amount'] = Order::where($orderWhere)->sum('order_amount');
$user['total_amount'] = round($user['total_amount'] ,2);
$user['total_amount'] = round($user['total_amount'], 2);
// 平均消费单价
$user['avg_amount'] = Order::where($orderWhere)->avg('order_amount');
$user['avg_amount'] = round($user['avg_amount'], 2);

View File

@ -50,13 +50,12 @@ class Notice
}
/**
* Notes: 根据各个场景发送通知
* @param $user_id
* @param $params
* @author 段誉(2021/4/28 18:21)
* @throws Exception
* @author 段誉(2021/4/28 18:21)
*/
public function noticeByScene($user_id, $params)
{
@ -71,7 +70,7 @@ class Notice
//发送系统消息
if (isset($scene_info['system_notice']['status']) && $scene_info['system_notice']['status'] == 1) {
$content = NoticeLogic::contentFormat($scene_info['system_notice']['content'], $params);
NoticeLogic::addNoticeLog($params, $scene_info,NoticeSetting::SYSTEM_NOTICE, $content);
NoticeLogic::addNoticeLog($params, $scene_info, NoticeSetting::SYSTEM_NOTICE, $content);
}
//发送短信记录
@ -81,7 +80,7 @@ class Notice
//发送公众号记录
if (isset($scene_info['oa_notice']['status']) && $scene_info['oa_notice']['status'] == 1) {
(new WxMessageServer($user_id,Client_::oa))->send($params);
(new WxMessageServer($user_id, Client_::oa))->send($params);
}
//发送小程序记录
@ -91,16 +90,14 @@ class Notice
}
/**
* Notes: 拼装额外参数
* @param $params
* @author 段誉(2021/4/28 18:21)
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
* @author 段誉(2021/4/28 18:21)
*/
public function mergeParams($params)
{
@ -114,8 +111,8 @@ class Notice
->find();
$goods_name = $order_goods['name'] ?? '商品';
if (mb_strlen($goods_name) > 8 ) {
$goods_name = mb_substr($goods_name,0,8) . '..';
if (mb_strlen($goods_name) > 8) {
$goods_name = mb_substr($goods_name, 0, 8) . '..';
}
$params['goods_name'] = $goods_name;
$params['order_sn'] = $order['order_sn'];
@ -130,6 +127,7 @@ class Notice
if (!empty($params['user_id'])) {
$user = Db::name('user')->where('id', $params['user_id'])->find();
$params['nickname'] = $user['nickname'];
$params['user_money'] = $user['user_money'];
}
//下级名称;(邀请人场景)