每日分红点分红

main
fengxinyhyl 11 months ago
parent 2cca063da1
commit a628d16511
  1. 46
      app/common/dao/store/order/StoreOrderBaseDao.php
  2. 42
      app/common/dao/system/HuitongDao.php
  3. 10
      app/common/dao/user/UserAssetsDao.php
  4. 31
      app/common/model/store/order/StoreOrderBase.php
  5. 31
      app/common/model/system/Huitong.php
  6. 55
      app/common/repositories/store/order/StoreOrderBaseRepository.php
  7. 865
      app/common/repositories/store/order/StoreOrderRepository.php
  8. 37
      app/common/repositories/system/HuitongRepository.php
  9. 50
      app/common/repositories/user/UserAssetsLogRepository.php
  10. 71
      app/common/repositories/user/UserAssetsRepository.php
  11. 6
      app/controller/api/Auth.php
  12. 2
      app/event.php
  13. 10
      crmeb/listens/pay/CustomizeTake.php
  14. 33
      crmeb/listens/task/CustomizeTask.php

@ -0,0 +1,46 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\dao\store\order;
use app\common\dao\BaseDao;
use app\common\model\store\order\StoreOrderBase;
/**
* Class StoreOrderDao
* @package app\common\dao\store\order
* @author xaboy
* @day 2020/6/8
*/
class StoreOrderBaseDao extends BaseDao
{
/**
* @return string
* @author xaboy
* @day 2020/6/8
*/
protected function getModel(): string
{
return StoreOrderBase::class;
}
public function getTotalBase($day){
if($day){
return StoreOrderBase::where('c_date',$day)->sum("base");
}else{
return StoreOrderBase::sum("base");
}
}
}

@ -0,0 +1,42 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\dao\system;
use app\common\dao\BaseDao;
use app\common\model\system\Huitong;
/**
* Class StoreOrderDao
* @package app\common\dao\store\order
* @author xaboy
* @day 2020/6/8
*/
class HuitongDao extends BaseDao
{
/**
* @return string
* @author xaboy
* @day 2020/6/8
*/
protected function getModel(): string
{
return Huitong::class;
}
public function getLastHuitong(){
return Huitong::order('id desc')->find();
}
}

@ -28,4 +28,14 @@ class UserAssetsDao extends BaseDao
{
$this->create(compact('uid', 'spread_uid', 'admin_id', 'old_spread_uid'));
}
public function getShareData(){
$total = UserAssets::sum('share_point');
$list = UserAssets::where('share_point','>',0)->field("uid, share_point")->select();
if($total){
return array('total'=>$total, 'list'=>$list->toArray());
}
return array('total'=>0, 'list'=>[]);
}
}

@ -0,0 +1,31 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\model\store\order;
use app\common\model\BaseModel;
class StoreOrderBase extends BaseModel
{
public static function tablePk(): ?string
{
return 'id';
}
public static function tableName(): string
{
return 'store_order_base';
}
}

@ -0,0 +1,31 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\model\system;
use app\common\model\BaseModel;
class Huitong extends BaseModel
{
public static function tablePk(): ?string
{
return 'id';
}
public static function tableName(): string
{
return 'huitong';
}
}

@ -0,0 +1,55 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\repositories\store\order;
use app\common\dao\store\order\StoreOrderBaseDao;
use app\common\dao\store\order\StoreOrderDao;
use app\common\repositories\BaseRepository;
/**
* Class StoreOrderRepository
* @package app\common\repositories\store\order
* @author xaboy
* @day 2020/6/9
* @mixin StoreOrderDao
*/
class StoreOrderBaseRepository extends BaseRepository
{
/**
* StoreOrderRepository constructor.
* @param StoreOrderBaseDao $dao
*/
public function __construct(StoreOrderBaseDao $dao)
{
$this->dao = $dao;
}
public function insertBase($list){
$data = [];
foreach ($list as $item){
$data[] = array(
'order_id' => $item['order_id'],
'base' => $item['base'],
'c_date' => date('Y-m-d'),
);
}
$this->dao->insertAll($data);
}
public function getTotalBase($day = ''){
return $this->dao->getTotalBase($day);
}
}

@ -0,0 +1,37 @@
<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\common\repositories\system;
use app\common\dao\store\order\StoreOrderDao;
use app\common\dao\system\HuitongDao;
use app\common\repositories\BaseRepository;
/**
* Class StoreOrderRepository
* @package app\common\repositories\store\order
* @author xaboy
* @day 2020/6/9
* @mixin StoreOrderDao
*/
class HuitongRepository extends BaseRepository
{
/**
* StoreOrderRepository constructor.
* @param HuitongDao $dao
*/
public function __construct(HuitongDao $dao)
{
$this->dao = $dao;
}
}

@ -15,6 +15,7 @@ namespace app\common\repositories\user;
use app\common\dao\user\UserAssetsLogDao;
use app\common\repositories\BaseRepository;
use app\common\repositories\store\order\StoreOrderBaseRepository;
use app\common\repositories\store\product\ProductAssistRepository;
use app\common\repositories\store\product\ProductRepository;
use app\common\repositories\system\groupData\GroupDataRepository;
@ -128,8 +129,9 @@ class UserAssetsLogRepository extends BaseRepository
public function userPayEvent($groupOrder)
{
// 配置信息
$config = $this->groupDataRepository->getGroupDataLst(0, 100, 1, 100);
$config = array_column($config['list'], "value", 'key');
$config = $this->userAssetsRepository->getConfig();
$baseList = array();
foreach ($groupOrder['orderList'] as $orderItem) {
$base = 0;
@ -147,6 +149,7 @@ class UserAssetsLogRepository extends BaseRepository
$this->userAssets($orderItem, $config, $base);
if ($base) {
$baseList[] = array('order_id' => $orderItem['order_id'], 'base' => $base);
// 2. 项目经理资产
$startProjectUid = $this->projectAssets($orderItem, $config, $base);
// 3. 培育经理资产
@ -163,6 +166,9 @@ class UserAssetsLogRepository extends BaseRepository
// 6. 商户和平台资产
$this->merchantAndPlatformAssets($orderItem);
}
if ($baseList) {
app(StoreOrderBaseRepository::class)->insertBase($baseList);
}
}
@ -201,7 +207,7 @@ class UserAssetsLogRepository extends BaseRepository
);
}
$this->addLog($logList);
$this->userAssetsRepository->orderEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
}
@ -290,7 +296,7 @@ class UserAssetsLogRepository extends BaseRepository
$log['ext'] = $ext;
$this->addLog([$log]);
$this->userAssetsRepository->orderEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
}
/**
@ -333,7 +339,7 @@ class UserAssetsLogRepository extends BaseRepository
);
$this->addLog($logList);
$this->userAssetsRepository->orderEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($user['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
}
@ -401,7 +407,7 @@ class UserAssetsLogRepository extends BaseRepository
'count' => $contribution,
);
$this->addLog($logList);
$this->userAssetsRepository->orderEvent($userProject['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($userProject['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
}
@ -481,7 +487,7 @@ class UserAssetsLogRepository extends BaseRepository
'count' => $contribution,
);
$this->addLog($logList);
$this->userAssetsRepository->orderEvent($userProject['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($userProject['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
return $userProject['spread_uid'];
}
@ -554,7 +560,7 @@ class UserAssetsLogRepository extends BaseRepository
);
}
$this->addLog($logList);
$this->userAssetsRepository->orderEvent($orderItem['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($orderItem['uid'], self::STATUS_FROZEN, compact('consume', 'welfare', 'huitong', 'contribution'));
// 5. 本人使用的福利积分
if ($orderItem['integral']) {
@ -567,15 +573,35 @@ class UserAssetsLogRepository extends BaseRepository
'count' => $orderItem['integral'],
);
$this->addLog([$log]);
$this->userAssetsRepository->orderEvent($orderItem['uid'], self::STATUS_USED, compact('consume', 'welfare', 'huitong', 'contribution'));
$this->userAssetsRepository->changeEvent($orderItem['uid'], self::STATUS_USED, compact('consume', 'welfare', 'huitong', 'contribution'));
}
}
public function userTakeEvent()
/**
* notes 订单收货事件处理
* @param $orderItem
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @create 2024/3/19 15:03
* @update 2024/3/19 15:03
* @author zhangkxiang
* @editor
*/
public function userTakeEvent($orderItem)
{
// 订单发送冻结资产发放
$refundList = $this->_getOrderData($orderItem['order_id'], self::STATUS_FROZEN);
if ($refundList) {
foreach ($refundList as $refund) {
$this->userAssetsRepository->changeEvent($refund['uid'], self::STATUS_SUCCESS, $refund);
}
}
// 更新该订单的所有数据为退款状态
$this->dao->updateOrderStatus($orderItem['order_id'], self::STATUS_SUCCESS);
}
/**
@ -595,7 +621,7 @@ class UserAssetsLogRepository extends BaseRepository
$refundList = $this->_getOrderData($orderItem['order_id'], self::STATUS_FROZEN);
if ($refundList) {
foreach ($refundList as $refund) {
$this->userAssetsRepository->orderEvent($refund['uid'], self::STATUS_REFUND, $refund);
$this->userAssetsRepository->changeEvent($refund['uid'], self::STATUS_REFUND, $refund);
}
}
@ -603,7 +629,7 @@ class UserAssetsLogRepository extends BaseRepository
$usedList = $this->_getOrderData($orderItem['order_id'], self::STATUS_USED);
if ($usedList) {
foreach ($usedList as $used) {
if($used['welfare'] > 0){
if ($used['welfare'] > 0) {
$info = $this->userAssetsRepository->get($used['uid']);
$this->userAssetsRepository->update($used['uid'], array('welfare' => $info['welfare'] + $used['welfare']));
}

@ -15,6 +15,8 @@ namespace app\common\repositories\user;
use app\common\dao\user\UserAssetsDao;
use app\common\repositories\BaseRepository;
use app\common\repositories\store\order\StoreOrderBaseRepository;
use app\common\repositories\system\groupData\GroupDataRepository;
use think\db\exception\DataNotFoundException;
use think\db\exception\DbException;
use think\db\exception\ModelNotFoundException;
@ -31,6 +33,16 @@ class UserAssetsRepository extends BaseRepository
$this->dao = $dao;
}
public function getConfig(){
// 配置信息
/**
* @var GroupDataRepository $groupDataRepository
*/
$groupDataRepository = app()->make(GroupDataRepository::class);
$config = $groupDataRepository->getGroupDataLst(0, 100, 1, 100);
return array_column($config['list'], "value", 'key');
}
/**
* notes 获取用户资产
@ -63,7 +75,7 @@ class UserAssetsRepository extends BaseRepository
/**
* notes 订单状态发生变更,影响用户资产
* notes 用户资产变更
* @param $uid
* @param $status
* @param $data
@ -75,7 +87,7 @@ class UserAssetsRepository extends BaseRepository
* @author zhangkxiang
* @editor
*/
public function orderEvent($uid, $status, $data = array())
public function changeEvent($uid, $status, $data = array())
{
$assets = array();
$info = $this->dao->get($uid);
@ -129,4 +141,59 @@ class UserAssetsRepository extends BaseRepository
$this->dao->create($assets);
}
}
/**
* notes 分红福利积分
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
* @create 2024/3/19 21:03
* @update 2024/3/19 21:03
* @author zhangkxiang
* @editor
*/
public function sharePoint(){
$config = $this->getConfig();
/**
* @var StoreOrderBaseRepository $orderBase
*/
$orderBase = app()->make(StoreOrderBaseRepository::class);
$count = $orderBase->getTotalBase(date('Y-m-d', strtotime('-1day')));
if(empty($count)){
return ;
}
$shareData = $this->dao->getShareData();
if(!$shareData['total']){
return ;
}
$base = round($config['share_award'] * $count / 100, 2);
if($base < 0.01){
$base = 0.01;
}
$logList = array();
foreach ($shareData['list'] as $item){
$welfare = $base / $shareData['total'] * $item['share_point'];
if($welfare < 0.01){
$welfare = 0.01;
}
$logList[] = array(
'uid' => $item['uid'],
'asset_type' => UserAssetsLogRepository::ASSET_TYPE_WELFARE,
'type' => UserAssetsLogRepository::CHANGE_TYPE_SHARE_GET,
'status' => UserAssetsLogRepository::STATUS_SUCCESS,
'count' => $welfare,
);
// 增加福利积分
$this->changeEvent($item['uid'],UserAssetsLogRepository::STATUS_SUCCESS, array('welfare' => $welfare));
}
// 增加记录
$logRepository = app()->make(UserAssetsLogRepository::class);
$logRepository->addLog($logList);
}
}

File diff suppressed because one or more lines are too long

@ -55,6 +55,7 @@ return [
\crmeb\listens\AuthCancelActivityListen::class,
\crmeb\listens\CloseUserSvipListen::class,
\crmeb\listens\SendSvipCouponListen::class,
// \crmeb\listens\task\CustomizeTask::class,
] : [],
'pay_success_user_recharge' => [\crmeb\listens\pay\UserRechargeSuccessListen::class],
'pay_success_user_order' => [\crmeb\listens\pay\UserOrderSuccessListen::class],
@ -64,6 +65,7 @@ return [
'order.paySuccess' => [\crmeb\listens\pay\CustomizePaySuccess::class],
'order.take' => [\crmeb\listens\pay\CustomizeTake::class],
'order.refundAll' => [\crmeb\listens\pay\CustomizeRefundAll::class],
'order.statistics' => [\crmeb\listens\task\CustomizeTask::class],
],
'subscribe' => [],

@ -9,14 +9,24 @@
namespace crmeb\listens\pay;
use app\common\repositories\user\UserAssetsLogRepository;
use crmeb\interfaces\ListenerInterface;
use think\facade\Log;
class CustomizeTake implements ListenerInterface
{
// {"order":{"order_id":33,"main_id":0,"group_order_id":32,"order_sn":"wxo1710768193328392661","uid":3,"spread_uid":0,"top_uid":1,"district_id":3378,"real_name":"\u5f20\u51ef\u7fd4","user_phone":"18362705640","user_address":"\u6c5f\u82cf\u5357\u4eac\u5e02\u6816\u971e\u533a\u5c27\u5316\u8857\u9053\u4e1c\u57ce\u4e16\u5bb6(\u5357\u4eac\u5e02\u6816\u971e\u533a\u5c27\u8fb0\u8def3\u53f7)24\u680b501","cart_id":"77","total_num":1,"total_price":"100.00","total_postage":"0.00","pay_price":"100.00","pay_postage":"0.00","is_selfbuy":0,"extension_one":"0.00","extension_two":"1.20","commission_rate":"30.0000","integral":0,"integral_price":"0.00","give_integral":100,"coupon_id":"","coupon_price":"0.00","platform_coupon_price":"0.00","svip_discount":"0.00","order_type":0,"paid":1,"pay_time":"2024-03-18 21:23:13","pay_type":0,"create_time":"2024-03-18 21:23:13","status":2,"delivery_type":"1","is_virtual":0,"delivery_name":"\u97f5\u8fbe\u5feb\u9012","delivery_id":"ewrwe","mark":"","remark":"","admin_mark":null,"verify_code":null,"verify_time":"2024-03-19 14:43:24","verify_service_id":null,"transaction_id":null,"activity_type":0,"order_extend":null,"mer_id":6,"reconciliation_id":0,"cost":"0.00","is_del":0,"is_system_del":0,"verify_status":0,"presellOrder":null}}
public function handle($data): void
{
Log::info('收货' . json_encode($data));
if(isset($data['order']) and $data['order']){
/**
* @var UserAssetsLogRepository $repository
*/
$repository = app()->make(UserAssetsLogRepository::class);
$repository->userTakeEvent($data['order']);
}
}
}

@ -0,0 +1,33 @@
<?php
/**
* CustomizePaySuccess.php
* 文件描述
* Created on 2024/3/13 23:02
* Created by zhangkaixiang
*/
namespace crmeb\listens\task;
use app\common\repositories\user\UserAssetsRepository;
use crmeb\interfaces\ListenerInterface;
use crmeb\services\TimerService;
use think\facade\Log;
//class CustomizeTask extends TimerService implements ListenerInterface
class CustomizeTask implements ListenerInterface
{
public function handle($event): void
{
// $this->tick(1000 * 60 , function () {
// Log::info("aaaa3333");
// });
/**
* @var UserAssetsRepository $userAssets
*/
$userAssets = app()->make(UserAssetsRepository::class);
$userAssets->sharePoint();
}
}
Loading…
Cancel
Save