添加营销配置,优化资产获取

main
fengxinyhyl 8 months ago
parent 9319b2ba2b
commit cc49abc76c
  1. 12
      app/common/dao/store/product/SpuDao.php
  2. 158
      app/common/repositories/user/UserAssetsLogRepository.php
  3. 6
      app/controller/api/store/product/StoreSpu.php
  4. 2
      app/event.php
  5. 2
      config/log.php
  6. 22
      crmeb/listens/AppEnd.php

@ -58,6 +58,18 @@ class SpuDao extends BaseDao
->when(isset($where['mer_ids']) && $where['mer_ids'] !== '',function($query)use($where){ ->when(isset($where['mer_ids']) && $where['mer_ids'] !== '',function($query)use($where){
$query->whereIn('P.mer_id',$where['mer_ids']); $query->whereIn('P.mer_id',$where['mer_ids']);
}) })
->when(isset($where['is_hot']) && $where['is_hot'] !== '',function($query)use($where){
$query->whereIn('P.is_hot',$where['is_hot']);
})
->when(isset($where['is_benefit']) && $where['is_benefit'] !== '',function($query)use($where){
$query->whereIn('P.is_benefit',$where['is_benefit']);
})
->when(isset($where['is_best']) && $where['is_best'] !== '',function($query)use($where){
$query->whereIn('P.is_best',$where['is_best']);
})
->when(isset($where['is_new']) && $where['is_new'] !== '',function($query)use($where){
$query->whereIn('P.is_new',$where['is_new']);
})
->when(isset($where['keyword']) && $where['keyword'] !== '',function($query)use($where){ ->when(isset($where['keyword']) && $where['keyword'] !== '',function($query)use($where){
if (is_numeric($where['keyword'])) { if (is_numeric($where['keyword'])) {
$query->whereLike("S.store_name|S.keyword|S.product_id", "%{$where['keyword']}%"); $query->whereLike("S.store_name|S.keyword|S.product_id", "%{$where['keyword']}%");

@ -17,6 +17,10 @@ use app\common\dao\user\UserAssetsLogDao;
use app\common\repositories\BaseRepository; use app\common\repositories\BaseRepository;
use app\common\repositories\store\product\ProductAssistRepository; use app\common\repositories\store\product\ProductAssistRepository;
use app\common\repositories\store\product\ProductRepository; use app\common\repositories\store\product\ProductRepository;
use app\common\repositories\system\groupData\GroupDataRepository;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
use think\facade\Log; use think\facade\Log;
/** /**
@ -43,11 +47,12 @@ class UserAssetsLogRepository extends BaseRepository
const STATUS_SUCCESS = 1; // 成功 const STATUS_SUCCESS = 1; // 成功
const STATUS_REFUND = 2; // 退款 const STATUS_REFUND = 2; // 退款
public function __construct(UserAssetsLogDao $dao, UserAssetsRepository $userAssetsRepository, ProductRepository $productRepository) public function __construct(UserAssetsLogDao $dao, UserAssetsRepository $userAssetsRepository, ProductRepository $productRepository, GroupDataRepository $groupRepository)
{ {
$this->dao = $dao; $this->dao = $dao;
$this->userAssetsRepository = $userAssetsRepository; $this->userAssetsRepository = $userAssetsRepository;
$this->productRepository = $productRepository; $this->productRepository = $productRepository;
$this->groupDataRepository = $groupRepository;
} }
/** /**
@ -91,25 +96,36 @@ class UserAssetsLogRepository extends BaseRepository
* @update 2024/3/15 17:22 * @update 2024/3/15 17:22
* @author zhangkxiang * @author zhangkxiang
* @editor * @editor
*
* {"name":"福利积分--项目经理", "value":10, "key":"welfare_project"}
{"name":"福利积分--一星经理", "value":30, "key":"welfare_project_1"}
{"name":"福利积分--二星经理", "value":50, "key":"welfare_project_2"}
{"name":"福利积分--三星经理", "value":80, "key":"welfare_project_3"}
{"name":"贡献值--用户", "value":1, "key":"contribution_user"}
{"name":"贡献值--项目经理", "value":1, "key":"contribution_project"}
{"name":"贡献值--一星经理", "value":2, "key":"contribution_project_1"}
{"name":"贡献值--二星经理", "value":3, "key":"contribution_project_2"}
{"name":"贡献值--三星经理", "value":4, "key":"contribution_project_3"}
{"name":"惠通宝--用户", "value":5, "key":"huitong_user"}
{"name":"惠通宝--项目经理", "value":10, "key":"huitong_project"}
{"name":"惠通宝--一星经理", "value":30, "key":"huitong_project_1"}
{"name":"惠通宝--二星经理", "value":50, "key":"huitong_project_2"}
{"name":"惠通宝--三星经理", "value":80, "key":"huitong_project_3"}
{"name":"福利积分--区域代理--区域代理奖", "value":1, "key":"welfare_agent"}
{"name":"福利积分--区域代理--推荐商家奖", "value":1, "key":"welfare_agent_recommend"}
{"name":"福利积分--项目经理--推荐商家奖", "value":1, "key":"welfare_project_recommend"}
{"name":"福利积分--商户--推荐商家奖", "value":1, "key":"welfare_merchat_recommend"}
{"name":"惠通宝增值幅度比例配置", "value":10, "key":"huitong_add"}
{"name":"福利积分--存在分红点用户奖励", "value":10, "key":"share_award"}
*/ */
public function userPayEvent($groupOrder) public function userPayEvent($groupOrder)
{ {
$logList = array(); // 配置信息
$consume = $welfare = $huitong = $contribution = 0; $config = $this->groupDataRepository->getGroupDataLst(0, 100, 1, 100);
// 循环groupOrder, 按照商家订单处理 $config = array_column($config['list'], "value", 'key');
foreach ($groupOrder['orderList'] as $orderItem) { foreach ($groupOrder['orderList'] as $orderItem) {
$base = 0; $base = 0;
// 1. 本人的消费积分
$logList[] = array(
'uid' => $groupOrder['uid'],
'asset_type' => self::ASSET_TYPE_CONSUME,
'type' => self::CHANGE_TYPE_ORDER_GET,
'status' => self::STATUS_FROZEN,
'order_id' => $orderItem['order_id'],
'count' => $orderItem['pay_price'],
);
$consume += $orderItem['pay_price'];
foreach ($orderItem['orderProduct'] as $orderProduct) { foreach ($orderItem['orderProduct'] as $orderProduct) {
// 获取商品详情(奖励积分 // 获取商品详情(奖励积分
$product = $this->productRepository->detail($orderProduct['product_id'], null); $product = $this->productRepository->detail($orderProduct['product_id'], null);
@ -120,47 +136,81 @@ class UserAssetsLogRepository extends BaseRepository
} }
} }
// 如果该订单奖励基数大于0 // 1. 用户资产
if($base){ $this->userAssets($orderItem, $config, $base);
// 2. 本人的福利积分
$orderWelfare = round($base * 0.1, 2); }
$welfare+= $orderWelfare; }
$logList[] = array(
'uid' => $groupOrder['uid'],
'asset_type' => self::ASSET_TYPE_WELFARE, /**
'type' => self::CHANGE_TYPE_ORDER_GET, * notes 用户资产变动
'status' => self::STATUS_FROZEN, * @param $orderItem
'order_id' => $orderItem['order_id'], * @param $config
'count' => $orderWelfare, * @param $base
); * @throws DataNotFoundException
* @throws DbException
// 3. 本人的惠通宝 * @throws ModelNotFoundException
$orderHuitong = round($base * 0.05, 2); * @create 2024/3/17 17:06
$huitong+= $orderHuitong; * @update 2024/3/17 17:06
$logList[] = array( * @author zhangkxiang
'uid' => $groupOrder['uid'], * @editor
'asset_type' => self::ASSET_TYPE_HUITONG, */
'type' => self::CHANGE_TYPE_ORDER_GET, public function userAssets($orderItem, $config, $base){
'status' => self::STATUS_FROZEN, $logList = array();
'order_id' => $orderItem['order_id'], $welfare = $huitong = $contribution = 0;
'count' => $orderHuitong,
); // 1. 本人的消费积分
$logList[] = array(
// 4. 本人的贡献值 'uid' => $orderItem['uid'],
$orderContribution = round($base * 0.01, 2); 'asset_type' => self::ASSET_TYPE_CONSUME,
$contribution+= $orderContribution; 'type' => self::CHANGE_TYPE_ORDER_GET,
$logList[] = array( 'status' => self::STATUS_FROZEN,
'uid' => $groupOrder['uid'], 'order_id' => $orderItem['order_id'],
'asset_type' => self::ASSET_TYPE_HUITONG, 'count' => $orderItem['pay_price'],
'type' => self::CHANGE_TYPE_ORDER_GET, );
'status' => self::STATUS_FROZEN, $consume = $orderItem['pay_price'];
'order_id' => $orderItem['order_id'],
'count' => $orderContribution, // 如果该订单奖励基数大于0
); if($base){
} // 2. 本人的福利积分
$orderWelfare = round($base * 0.1, 2);
$welfare = $orderWelfare;
$logList[] = array(
'uid' => $orderItem['uid'],
'asset_type' => self::ASSET_TYPE_WELFARE,
'type' => self::CHANGE_TYPE_ORDER_GET,
'status' => self::STATUS_FROZEN,
'order_id' => $orderItem['order_id'],
'count' => $orderWelfare,
);
// 3. 本人的惠通宝
$orderHuitong = round($base * $config['huitong_user'] /100, 2);
$huitong = $orderHuitong;
$logList[] = array(
'uid' => $orderItem['uid'],
'asset_type' => self::ASSET_TYPE_HUITONG,
'type' => self::CHANGE_TYPE_ORDER_GET,
'status' => self::STATUS_FROZEN,
'order_id' => $orderItem['order_id'],
'count' => $orderHuitong,
);
// 4. 本人的贡献值
$orderContribution = round($base * $config['contribution_user']/100, 2);
$contribution = $orderContribution;
$logList[] = array(
'uid' => $orderItem['uid'],
'asset_type' => self::ASSET_TYPE_CONTRIBUTION,
'type' => self::CHANGE_TYPE_ORDER_GET,
'status' => self::STATUS_FROZEN,
'order_id' => $orderItem['order_id'],
'count' => $orderContribution,
);
} }
$this->addLog($logList); $this->addLog($logList);
$this->userAssetsRepository->orderEvent($groupOrder['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution')); $this->userAssetsRepository->orderEvent($orderItem['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
} }
public function addLog($list) public function addLog($list)

@ -55,7 +55,11 @@ class StoreSpu extends BaseController
'common', 'common',
'is_trader', 'is_trader',
'product_ids', 'product_ids',
'mer_id' 'mer_id',
'is_hot',
'is_benefit',
'is_best',
'is_new',
]); ]);
$where['is_gift_bag'] = 0; $where['is_gift_bag'] = 0;
$where['product_type'] = 0; $where['product_type'] = 0;

@ -16,7 +16,7 @@ return [
'listen' => [ 'listen' => [
'AppInit' => [], 'AppInit' => [],
'HttpRun' => [], 'HttpRun' => [],
'HttpEnd' => [], 'HttpEnd' => [\crmeb\listens\AppEnd::class],
'LogLevel' => [], 'LogLevel' => [],
'LogWrite' => [], 'LogWrite' => [],
'swoole.task' => [\crmeb\listens\SwooleTaskListen::class], 'swoole.task' => [\crmeb\listens\SwooleTaskListen::class],

@ -48,7 +48,7 @@ return [
'format' => '[%s][%s] %s', 'format' => '[%s][%s] %s',
// 是否实时写入 // 是否实时写入
'realtime_write' => true, 'realtime_write' => true,
'file_size' => 1024 * 1024 * 10, 'file_size' => 1024 * 10,
], ],
'sql' => [ 'sql' => [
// 日志记录方式 // 日志记录方式

@ -0,0 +1,22 @@
<?php
declare (strict_types = 1);
namespace crmeb\listens;
use think\facade\Log;
use think\facade\Request;
class AppEnd
{
/**
* 事件监听处理
*
* @return mixed
*/
public function handle($response)
{
$params = Request::param();
Log::info(Request::url(). ' params: ' . json_encode($params));
}
}
Loading…
Cancel
Save