| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- <?php
- namespace app\modules\alliance\models;
- use app\models\Order;
- use app\models\SaaSLeaguePriceLog;
- use app\models\SaasUser;
- use app\models\Store;
- use app\models\StoreDividendsCycle;
- use app\models\StoreDividendsCycleSub;
- use app\models\StoreDividendsUser;
- use app\models\StoreDividendsUserIntegralLog;
- use app\models\StoreDividendsUserLeagueLog;
- use yii\base\Model;
- class StoreDividendsForm extends Model
- {
- public $saas_user;
- public $role;
- public $store_id;
- public $league_price;
- const ROLE_USER = 0;
- const ROLE_STORE = 1;
- public function rules()
- {
- return [
- [['store_id'], 'integer'],
- [['league_price'], 'number']
- ];
- }
- public function index() {
- $saas_user = $this->saas_user;
- $role = $this->role;
- $store_id = $this->store_id;
- $role_id = $saas_user->id;
- if ($role === self::ROLE_USER) {
- //头部信息
- $user_info = [
- 'avatar' => $saas_user->avatar,
- 'mobile' => $saas_user->mobile,
- 'name' => $saas_user->name,
- ];
- //联盟券余额
- $league_price = $saas_user->league_price;
- } else {
- $store = Store::findOne($store_id);
- $user_info = [
- 'logo' => $store->logo,
- 'address' => $store->address,
- 'name' => $store->name,
- ];
- //联盟券余额
- $league_price = $store->league_price;
- $role_id = $store->id;
- }
- //积分金额
- $storeDividendsUser = StoreDividendsUser::findOne(['role' => $role, 'role_id' => $role_id]);
- $integral_price = $storeDividendsUser ? $storeDividendsUser->dividends_integral : 0;
- $dividends_price = $storeDividendsUser ? $storeDividendsUser->league_price : 0;
- //上期分红
- $last_league_price = StoreDividendsUserLeagueLog::find()->where(['dividends_user_id' => $storeDividendsUser->id])
- ->orderBy('id desc')
- ->select('league_price')->scalar() ?: '0.00';
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'user_info' => $user_info,
- 'league_price' => $league_price,
- 'integral_price' => $integral_price,
- 'last_league_price' => $last_league_price,
- 'dividends_price' => $dividends_price
- ]
- ];
- }
- //分红积分
- public function integralLog() {
- $saas_user = $this->saas_user;
- $role = $this->role;
- $store_id = $this->store_id;
- $role_id = $saas_user->id;
- if ($role === self::ROLE_STORE) {
- $store = Store::findOne($store_id);
- $role_id = $store->id;
- }
- $storeDividendsUser = StoreDividendsUser::findOne(['role' => $role, 'role_id' => $role_id]);
- if (!$storeDividendsUser) {
- return [
- 'code' => 0,
- 'msg' => '用户不存在',
- 'data' => [
- 'list' => []
- ]
- ];
- }
- $query = StoreDividendsUserIntegralLog::find()->alias('dl')
- ->leftJoin(['o' => Order::tableName()],
- 'dl.order_id = o.id AND dl.order_type <> ' . StoreDividendsCycleSub::ORDER_TYPE_FACE)
- ->leftJoin(['sco' => \app\plugins\scanCodePay\models\Order::tableName()],
- 'dl.order_id = sco.id AND dl.order_type = ' . StoreDividendsCycleSub::ORDER_TYPE_FACE)
- ->where(['dl.dividends_user_id' => $storeDividendsUser->id])
- ->orderBy('dl.id desc')
- ->select('dl.dividends_integral, dl.created_at, dl.order_type, o.order_no, o.pay_price,
- sco.order_no sco_order_no, sco.total_price as sc_total_price, sco.coupon_sub_price');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $item['name'] = $role === self::ROLE_STORE ? '用户下单' : '商城购物';
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- //如果是当面付
- if ($item['order_type'] == StoreDividendsCycleSub::ORDER_TYPE_FACE) {
- $item['order_no'] = $item['sco_order_no'];
- $item['pay_price'] = bcsub($item['sc_total_price'], $item['coupon_sub_price'], 2);
- }
- }
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'list' => $list
- ]
- ];
- }
- //分红明细
- public function leagueLog() {
- $saas_user = $this->saas_user;
- $store_id = $this->store_id;
- $role = $this->role;
- $storeDividendsUser = StoreDividendsUser::findOne(['role' => StoreDividendsUser::ROLE_STORE, 'role_id' => $store_id]);
- if ($role === self::ROLE_USER) {
- $storeDividendsUser = StoreDividendsUser::findOne(['role' => StoreDividendsUser::ROLE_USER, 'role_id' => $saas_user->id]);
- }
- if (!$storeDividendsUser) {
- return [
- 'code' => 0,
- 'msg' => '用户不存在',
- 'data' => [
- 'list' => []
- ]
- ];
- }
- $query = StoreDividendsUserLeagueLog::find()->alias('dl')
- ->leftJoin(['dc' => StoreDividendsCycle::tableName()], 'dl.dividends_cycle_id = dc.id')
- ->where(['>', 'dl.league_price', 0])->andWhere(['dl.dividends_user_id' => $storeDividendsUser->id])
- ->select('dl.id, dl.league_price, dl.created_at, dc.name, dc.id as cycle_id')
- ->orderBy('dl.id desc');
- $list = pagination_make($query);
- foreach ($list['list'] as &$item) {
- $item['created_at'] = date('Y-m-d H:i:s', $item['created_at']);
- }
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => [
- 'list' => $list
- ]
- ];
- }
- public function leagueDetailLog() {
- if ($this->role === self::ROLE_USER) {
- $saas_user = $this->saas_user;
- $query = SaaSLeaguePriceLog::find()->alias('lpl')
- ->leftJoin(['su' => SaasUser::tableName()], 'su.id = lpl.saas_user_id')
- ->where(['lpl.role' => SaaSLeaguePriceLog::ROLE_USER, 'lpl.is_delete' => 0, 'lpl.saas_user_id' => $saas_user->id]);
- } else {
- $store_id = $this->store_id;
- $query = SaaSLeaguePriceLog::find()->alias('lpl')
- ->leftJoin(['s' => Store::tableName()], 's.id = lpl.store_id')
- ->where(['lpl.role' => SaaSLeaguePriceLog::ROLE_STORE, 'lpl.is_delete' => 0, 'lpl.store_id' => $store_id]);
- }
- $query->andWhere(['>', 'lpl.league_price', 0])->select('lpl.id, lpl.type, lpl.league_price, lpl.send_or_take_type, lpl.addtime')
- ->orderBy('lpl.id DESC');
- $list = pagination_make($query);
- foreach ($list['list'] as $index => &$item) {
- $item['send_or_take_type'] = intval($item['send_or_take_type']);
- $item['created_at'] = date('Y-m-d H:i:s', $item['addtime']);
- $item['type_text'] = SaaSLeaguePriceLog::getTypeStr($item['type']);
- unset($list['list'][$index]['addtime']);
- }
- return [
- 'code' => 0,
- 'msg' => '',
- 'data' => $list
- ];
- }
- /**
- * 商城联盟券转赠给自身
- */
- public function selfLeagueSend() {
- $saas_user = $this->saas_user;
- $saas_user = SaasUser::findOne($saas_user->id);
- $league_price = $this->league_price;
- $store_id = $this->store_id;
- $store = Store::findOne($store_id);
- if (!$store) {
- return [
- 'code' => 1,
- 'msg' => '店铺不存在'
- ];
- }
- if ($league_price <= 0) {
- return [
- 'code' => 1,
- 'msg' => '提交联盟券金额不正确'
- ];
- }
- if ($store->league_price < $league_price) {
- return [
- 'code' => 1,
- 'msg' => '当前店铺联盟券金额不足'
- ];
- }
- $before = $store->league_price;
- $store->updateCounters(['league_price' => -floatval($league_price)]);
- \app\models\SaaSLeaguePriceLog::setLeaguePriceLog(
- $store->id,
- $saas_user->id,
- $league_price,
- $before,
- \app\models\SaaSLeaguePriceLog::TYPE_SEND,
- \app\models\SaaSLeaguePriceLog::TAKE_TYPE,
- \app\models\SaaSLeaguePriceLog::ROLE_STORE
- );
- $before = $saas_user->league_price;
- $saas_user->updateCounters(['league_price' => floatval($league_price)]);
- $id = 0;
- \app\models\SaaSLeaguePriceLog::setLeaguePriceLog(
- $store->id,
- $saas_user->id,
- $league_price,
- $before,
- \app\models\SaaSLeaguePriceLog::TYPE_SEND,
- \app\models\SaaSLeaguePriceLog::SEND_TYPE,
- \app\models\SaaSLeaguePriceLog::ROLE_USER,
- 0,
- $id
- );
- return [
- 'code' => 0,
- 'msg' => '提交成功'
- ];
- }
- }
|