|
@@ -2,14 +2,20 @@
|
|
|
|
|
|
namespace app\admin\service\member;
|
|
|
|
|
|
+use app\model\ClientPoints;
|
|
|
use app\model\Device;
|
|
|
use app\model\Family;
|
|
|
use app\model\FamilyMember;
|
|
|
+use app\model\Goods;
|
|
|
use app\model\Member;
|
|
|
use app\model\MemberAccount;
|
|
|
use app\model\MemberCert;
|
|
|
use app\model\MemberDevice;
|
|
|
use app\model\MemberInfo;
|
|
|
+use app\model\Order;
|
|
|
+use app\model\OrderSheet;
|
|
|
+use app\model\PayDetail;
|
|
|
+use app\model\SysCategory;
|
|
|
use app\model\SysSerial;
|
|
|
use support\Db;
|
|
|
use support\Request;
|
|
@@ -23,21 +29,22 @@ class MemberService
|
|
|
$name = $request->get('name', '');
|
|
|
$mobile = $request->get('mobile', '');
|
|
|
|
|
|
- $rows = Member::where('member_is_owner', 'N')
|
|
|
+ $rows = Member::with('account')
|
|
|
+ ->where('member_is_owner', 'N')
|
|
|
->leftJoin('member_info', 'member_info.join_info_member_id', 'member.member_id')
|
|
|
->leftJoin('member_cert', 'member_cert.join_cert_member_id', 'member.member_id')
|
|
|
- ->leftjoin('member_account', 'member.member_id', '=', 'member_account.join_account_member_id')
|
|
|
+// ->leftjoin('member_account', 'member.member_id', '=', 'member_account.join_account_member_id')
|
|
|
->leftJoin('member_role', 'member_role.member_role_id', 'member.join_member_role_id')
|
|
|
- ->where('member_account.member_account_classify', 'CASH')
|
|
|
+// ->where('member_account.member_account_classify', 'CASH')
|
|
|
->when($name != '', function ($query) use ($name) {
|
|
|
$query->where('member_cert.member_cert_name', 'like', '%' . $name . '%');
|
|
|
})->when($mobile != '', function ($query) use ($mobile) {
|
|
|
$query->where('member.member_mobile', 'like', '%' . $mobile . '%');
|
|
|
})->select('member_id', 'member_is_owner', 'member_classify', 'member_status', 'member_mobile', 'member_from', 'member_addtimes',
|
|
|
'member_info.member_info_nickname', 'member_info.member_info_headimg',
|
|
|
- 'member_role.member_role_id','member_role.member_role_name',
|
|
|
+ 'member_role.member_role_id', 'member_role.member_role_name',
|
|
|
'member_cert.member_cert_birth', 'member_cert.member_cert_gender', 'member_cert.member_cert_name', 'member_cert.member_cert_nbr', 'member_cert.member_cert_province', 'member_cert.member_cert_addr', 'member_cert.member_cert_face', 'member_cert.member_cert_photo', 'member_cert.member_cert_nation',
|
|
|
- 'member_account.member_account_surplus'
|
|
|
+// 'member_account.member_account_surplus'
|
|
|
);
|
|
|
// 总条数
|
|
|
$total = $rows->count('member_id');
|
|
@@ -62,6 +69,28 @@ class MemberService
|
|
|
'member_cert_photo' => !empty($row['member_cert_photo']) ? getenv('STORAGE_DOMAIN') . $row['member_cert_photo'] : '',
|
|
|
'member_cert_nation' => $row['member_cert_nation'],
|
|
|
];
|
|
|
+ $account = [];
|
|
|
+ if (!empty($row['account'])) {
|
|
|
+ foreach ($row['account'] as $item) {
|
|
|
+ if ($item['member_account_classify'] == 'POINTS') {
|
|
|
+ $account['points'] = [
|
|
|
+ 'member_account_income' => $item['member_account_income'],
|
|
|
+ 'member_account_expend' => $item['member_account_expend'],
|
|
|
+ 'member_account_surplus' => $item['member_account_surplus'],
|
|
|
+ 'member_account_added' => $item['member_account_added'],
|
|
|
+ ];
|
|
|
+ } else if ($item['member_account_classify'] == 'CASH') {
|
|
|
+ $account['cash'] = [
|
|
|
+ 'member_account_income' => $item['member_account_income'],
|
|
|
+ 'member_account_expend' => $item['member_account_expend'],
|
|
|
+ 'member_account_surplus' => $item['member_account_surplus'],
|
|
|
+ 'member_account_added' => $item['member_account_added'],
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $row['account'] = $account;
|
|
|
+
|
|
|
$row['is_auth'] = "未认证";
|
|
|
if (!empty($row['member_cert_nbr']) && !empty($row['member_cert_name'])) {
|
|
|
$row['is_auth'] = "已认证";
|
|
@@ -71,6 +100,159 @@ class MemberService
|
|
|
return json_success('', compact('rows', 'page', 'pageSize', 'total'));
|
|
|
}
|
|
|
|
|
|
+ public static function info($memberId)
|
|
|
+ {
|
|
|
+ $member = Member::with('cert')
|
|
|
+ ->where('member_id', $memberId)
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ return json_success('', $member);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function balanceInfo($memberId)
|
|
|
+ {
|
|
|
+ $account = MemberAccount::where('join_account_member_id', $memberId)
|
|
|
+ ->where('member_account_classify', 'CASH')
|
|
|
+ ->first();
|
|
|
+ $balance = $account->member_account_surplus + $account->member_account_added;
|
|
|
+
|
|
|
+ $info = PayDetail::where('join_pay_member_id', $memberId)
|
|
|
+ ->where('pay_status', 'SUCCESS')
|
|
|
+ ->orderByDesc('pay_addtimes')
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $money = 0;
|
|
|
+ $data = [];
|
|
|
+ foreach ($info as $key => $item) {
|
|
|
+ $orderIds = Order::where('order_groupby', $item['join_pay_order_id'])->pluck('order_id');
|
|
|
+ $goodsIds = OrderSheet::whereIn('join_sheet_order_id', $orderIds)->pluck('join_sheet_goods_id');
|
|
|
+ $categoryIds = Goods::whereIn('goods_id', $goodsIds)->pluck('join_goods_category_id');
|
|
|
+
|
|
|
+ $categoryName = [];
|
|
|
+ foreach ($categoryIds as $id) {
|
|
|
+ $category = SysCategory::where('category_id', $id)->first();
|
|
|
+ if (!empty($category->category_super_path)) {
|
|
|
+ $path = explode('#', $category->category_super_path);
|
|
|
+ $ids = array_filter($path);
|
|
|
+ $categoryName[] = SysCategory::where('category_id', current($ids))->value('category_name');
|
|
|
+ } else {
|
|
|
+ $categoryName[] = $category->category_name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $item['goods_category'] = implode(',', $categoryName);
|
|
|
+
|
|
|
+ if ($item['pay_category'] == 'RECHARGE') {
|
|
|
+ $item['balance_type'] = 'add';
|
|
|
+ } else {
|
|
|
+ $item['balance_type'] = 'cut';
|
|
|
+ }
|
|
|
+ if ($key == 0) {
|
|
|
+ if (!empty($item['pay_extend_json'])) {
|
|
|
+ $extendJson = json_decode($item['pay_extend_json'], true);
|
|
|
+ // 计划任务没跑
|
|
|
+ if ($item['pay_category'] == 'RECHARGE' && (!isset($extendJson['notify']) || $extendJson['notify'] != 'success')) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (isset($extendJson['added_amount'])) {
|
|
|
+ $data[] = [
|
|
|
+ 'join_pay_member_id' => $item['join_pay_member_id'],
|
|
|
+ 'pay_addtimes' => $item['pay_addtimes'],
|
|
|
+ 'pay_amount' => $extendJson['added_amount'],
|
|
|
+ 'pay_category' => 'ADDED',
|
|
|
+ 'balance' => number_format($balance, 2, '.', ''),
|
|
|
+ 'balance_type' => 'add',
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $balance = $balance - $extendJson['added_amount'];
|
|
|
+ $item['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ $balance = $balance - $item['pay_amount'];
|
|
|
+ $data[] = $item;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($item['pay_category'] == 'RECHARGE') {
|
|
|
+ if (!empty($item['pay_extend_json'])) {
|
|
|
+ $extendJson = json_decode($item['pay_extend_json'], true);
|
|
|
+ if (isset($extendJson['added_amount'])) {
|
|
|
+ $data[] = [
|
|
|
+ 'join_pay_member_id' => $item['join_pay_member_id'],
|
|
|
+ 'pay_addtimes' => $item['pay_addtimes'],
|
|
|
+ 'pay_amount' => $extendJson['added_amount'],
|
|
|
+ 'pay_category' => 'ADDED',
|
|
|
+ 'balance' => number_format($balance, 2, '.', ''),
|
|
|
+ 'balance_type' => 'add',
|
|
|
+ ];
|
|
|
+ $balance = $balance - $extendJson['added_amount'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $item['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ $balance = $balance - $item['pay_amount'];
|
|
|
+ } else {
|
|
|
+ $item['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ $balance = $balance + $item['pay_amount'];
|
|
|
+ }
|
|
|
+
|
|
|
+ $data[] = $item;
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('', $data);
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function pointInfo($memberId)
|
|
|
+ {
|
|
|
+ $account = MemberAccount::where('join_account_member_id', $memberId)
|
|
|
+ ->where('member_account_classify', 'POINTS')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ $balance = $account->member_account_surplus + $account->member_account_added;
|
|
|
+ $points = ClientPoints::where('join_client_points_member_id', $memberId)->get()->toArray();
|
|
|
+ $nowPoint = 0;
|
|
|
+ foreach ($points as $key => &$point) {
|
|
|
+ $point['goods_category'] = '其他';
|
|
|
+ if (!empty($point['join_client_points_goods_id'])) {
|
|
|
+ $categoryId = Goods::where('goods_id', $point['join_client_points_goods_id'])->pluck('join_goods_category_id');
|
|
|
+
|
|
|
+ $category = SysCategory::where('category_id', $categoryId)->first();
|
|
|
+ if (!empty($category->category_super_path)) {
|
|
|
+ $path = explode('#', $category->category_super_path);
|
|
|
+ $ids = array_filter($path);
|
|
|
+ $point['goods_category'] = SysCategory::where('category_id', current($ids))->value('category_name');
|
|
|
+ } else {
|
|
|
+ $point['goods_category'] = $category->category_name;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (in_array($point['client_points_category'], ["评价", "消费", "活动", "赠送"])) {
|
|
|
+ $point['balance_type'] = 'add';
|
|
|
+ } else {
|
|
|
+ $point['balance_type'] = 'cut';
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($key == 0) {
|
|
|
+ $point['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ if (in_array($point['client_points_category'], ["评价", "消费", "活动", "赠送"])) {
|
|
|
+ $balance = $balance - $point['client_points_nbr'];
|
|
|
+ } else {
|
|
|
+ $balance = $balance + $point['client_points_nbr'];
|
|
|
+ }
|
|
|
+
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (in_array($point['client_points_category'], ["评价", "消费", "活动", "赠送"])) {
|
|
|
+ $point['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ $balance = $balance - $point['client_points_nbr'];
|
|
|
+// $point['balance'] = $balance = $nowPoint = number_format($balance - $point['client_points_nbr'], 2, '.', '');
|
|
|
+ } else {
|
|
|
+ $point['balance'] = number_format($balance, 2, '.', '');
|
|
|
+ $balance = $balance + $point['client_points_nbr'];
|
|
|
+// $point['balance'] = $balance = $nowPoint = number_format($balance + $point['client_points_nbr'], 2, '.', '');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('', $points);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @Desc 添加会员
|
|
|
* @Author Gorden
|