fixed
This commit is contained in:
320
front/application/index/model/WechatUserModel.php
Normal file
320
front/application/index/model/WechatUserModel.php
Normal file
@@ -0,0 +1,320 @@
|
||||
<?php
|
||||
/*
|
||||
* description:
|
||||
* author:wh
|
||||
* email:
|
||||
* createTime:{2022/01/18} {16:24}
|
||||
*/
|
||||
|
||||
|
||||
namespace app\index\model;
|
||||
|
||||
use app\apidata\Config;
|
||||
use app\common\model\TabConf;
|
||||
use think\Db;
|
||||
|
||||
class WechatUserModel extends \app\index\model\BaseModel
|
||||
{
|
||||
|
||||
/**
|
||||
* desc:
|
||||
* author:wh
|
||||
* @param $wx_user_info \app\index\model\微信用户
|
||||
*
|
||||
* {
|
||||
* "openid":"or9D2vs863Ky5Py2ovkAiu9XFLO4",
|
||||
* "nickname":"起源果蔬副食大华",
|
||||
* "sex":0,
|
||||
* "language":"",
|
||||
* "city":"",
|
||||
* "province":"",
|
||||
* "country":"",
|
||||
* "headimgurl":"https://thirdwx.qlogo.cn/mmopen/vi_32/joiaA475nx3fJiaqx0ibdnWo4A7Q3uCgu2hsribI0ATLItORjuUgCSP8mCaBkqL61ibGojib4pQYX1djUhZpF5zoqpSg/132",
|
||||
* "privilege":[]
|
||||
* }
|
||||
*/
|
||||
static function insertInfo(array $wx_user_info)
|
||||
{
|
||||
|
||||
if (isset($wx_user_info['privilege'])) {
|
||||
$wx_user_info['privilege'] = json_encode($wx_user_info['privilege']);
|
||||
}
|
||||
$data = [
|
||||
'nickname' => $wx_user_info['nickname'],
|
||||
'country' => $wx_user_info['country'],
|
||||
'province' => $wx_user_info['province'],
|
||||
'city' => $wx_user_info['city'],
|
||||
'headimage' => $wx_user_info['headimgurl'],
|
||||
'language' => $wx_user_info['language'],
|
||||
'openid' => $wx_user_info['openid'],
|
||||
'unionid' => isset($wx_user_info['unionid']) ? $wx_user_info['unionid'] : '',
|
||||
'privilege' => $wx_user_info['privilege'],
|
||||
'sex' => $wx_user_info['sex'],
|
||||
'arm_group' => '',
|
||||
'score' => 0,//积分
|
||||
'group_buy_earnings' => 0,//拼团收益
|
||||
'water_drop_balance' => 0,//水滴
|
||||
];
|
||||
self::tab(TabConf::$fa_wechatuser)
|
||||
->data($data)
|
||||
->insert();
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:更新用户信息
|
||||
*
|
||||
* author:wh
|
||||
* @throws \think\Exception
|
||||
* @throws \think\exception\PDOException
|
||||
*/
|
||||
static function updateUser($wx_user_info)
|
||||
{
|
||||
$data = [
|
||||
'nickname' => $wx_user_info['nickname'],
|
||||
'headimage' => $wx_user_info['headimgurl'],
|
||||
'unionid' => isset($wx_user_info['unionid']) ? $wx_user_info['unionid'] : '',
|
||||
];
|
||||
self::tab(TabConf::$fa_wechatuser)
|
||||
->data($data)
|
||||
->where('openid', index_user_openid())
|
||||
->update();
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:
|
||||
* author:wh
|
||||
* @param string $unionid
|
||||
* @return array|bool|\PDOStatement|string|\think\Model|null
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
static function getWxUserByUnionid(string $unionid)
|
||||
{
|
||||
return Db::table(TabConf::$fa_wechatuser)
|
||||
->field('id')
|
||||
->where('unionid', $unionid)
|
||||
->find();
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:
|
||||
* author:wh
|
||||
* @param string $openid
|
||||
* @return array|bool|\PDOStatement|string|\think\Model|null
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
static function getWxUserByOpenid(string $openid)
|
||||
{
|
||||
return Db::table(TabConf::$fa_wechatuser)
|
||||
//->field('id')
|
||||
->where('openid', $openid)
|
||||
->find();
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:
|
||||
* author:wh
|
||||
* @param string $openid
|
||||
* @return array|bool|\PDOStatement|string|\think\Model|null
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
static function getNicknameByOpenid(string $openid)
|
||||
{
|
||||
return Db::table(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->value('nickname');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc:增加店铺会员积分
|
||||
*
|
||||
* author:wh
|
||||
*/
|
||||
static function addShopMemberScore(string $openid, $shop_member_score)
|
||||
{
|
||||
Db::table(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->setInc('shop_member_score', $shop_member_score);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* desc:增加积分、积分变动记录
|
||||
* author:wh
|
||||
*/
|
||||
static function addScore(string $openid, $order_real_amount)
|
||||
{
|
||||
$score = $order_real_amount * 100;
|
||||
//用户
|
||||
$user = Db::table(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->find();
|
||||
//增加积分变动记录
|
||||
Db::table(TabConf::$fa_score_change_record)
|
||||
->data([
|
||||
'nickname' => $user['nickname'],
|
||||
'openid' => $user['openid'],
|
||||
'score' => $score,
|
||||
'score_before' => $user['score'],
|
||||
'score_after' => $user['score'] + $score,
|
||||
'from' => 'main_store_goods_buy_order',
|
||||
])
|
||||
->insert();
|
||||
//增加积分
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->setInc('score', $score);//分为单位
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:减去积分 扣除积分、积分变动记录
|
||||
* author:wh
|
||||
*/
|
||||
static function deductScore(string $openid, $order_real_amount, $remark = '')
|
||||
{
|
||||
$score = $order_real_amount * 100;
|
||||
//用户
|
||||
$user = Db::table(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->find();
|
||||
//增加积分变动记录
|
||||
Db::table(TabConf::$fa_score_change_record)
|
||||
->data([
|
||||
'nickname' => $user['nickname'],
|
||||
'openid' => $user['openid'],
|
||||
'score' => -$score,
|
||||
'score_before' => $user['score'],
|
||||
'score_after' => $user['score'] - $score,
|
||||
'from' => 'system_deduct_score',//系统冲扣积分
|
||||
'remark' => $remark,
|
||||
])
|
||||
->insert();
|
||||
//增加积分
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->setDec('score', $score);//分为单位
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:积分冲补
|
||||
*
|
||||
* author:wh
|
||||
* @param string $openid
|
||||
* @param $order_real_amount
|
||||
* @param string $remark
|
||||
* @return bool|int|string|true
|
||||
* @throws \think\Exception
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
static function repairScore(string $openid, $order_real_amount, $remark = '')
|
||||
{
|
||||
$score = $order_real_amount * 100;
|
||||
//用户
|
||||
$user = Db::table(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->find();
|
||||
//增加积分变动记录
|
||||
Db::table(TabConf::$fa_score_change_record)
|
||||
->data([
|
||||
'nickname' => $user['nickname'],
|
||||
'openid' => $user['openid'],
|
||||
'score' => $score,
|
||||
'score_before' => $user['score'],
|
||||
'score_after' => $user['score'] + $score,
|
||||
'from' => 'system_repair_score',//系统冲补积分
|
||||
'remark' => $remark,
|
||||
])
|
||||
->insert();
|
||||
//增加积分
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->setInc('score', $score);//分为单位
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:每笔订单成功之后增加水滴
|
||||
*
|
||||
* author:wh
|
||||
* @param string $openid
|
||||
* @param $order_real_amount
|
||||
* @return bool|int|string|true
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
static function addWaterDropBalance(string $openid, $order_real_amount)
|
||||
{
|
||||
$water_drop_basic_num = (int)Config::sundryConfigVal('water_drop_basic_num');
|
||||
|
||||
$water = 0;
|
||||
if ($order_real_amount < 1) {
|
||||
$water = 1;//小于1积累1滴水滴
|
||||
} else if ($order_real_amount >= 1 && $order_real_amount < 10) {
|
||||
$water = 2;
|
||||
} else if ($order_real_amount >= 10 && $order_real_amount < 50) {
|
||||
$water = 3;
|
||||
} else if ($order_real_amount >= 50 && $order_real_amount < 100) {
|
||||
$water = 4;
|
||||
} else if ($order_real_amount >= 100 && $order_real_amount < 500) {
|
||||
$water = 5;
|
||||
} else if ($order_real_amount >= 500 && $order_real_amount < 2000) {
|
||||
$water = 6;
|
||||
} else if ($order_real_amount >= 2000) {
|
||||
$water = 7;
|
||||
}
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->setInc('water_drop_balance', $water * $water_drop_basic_num);
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:实时获取用户身上的微信拼团收益
|
||||
* author:wh
|
||||
*/
|
||||
static function getUserEarnings()
|
||||
{
|
||||
$val = self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', index_user_openid())
|
||||
->value('group_buy_earnings');
|
||||
|
||||
return 1 * $val;
|
||||
}
|
||||
|
||||
static function getUserTypeByOpenid(string $openid)
|
||||
{
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', $openid)
|
||||
->value('user_type');
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:实时获取用户身上的积分
|
||||
* author:wh
|
||||
*/
|
||||
static function getUserScore()
|
||||
{
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', index_user_openid())
|
||||
->value('score');
|
||||
}
|
||||
|
||||
/**
|
||||
* desc:实时获取用户身上的水滴
|
||||
* author:wh
|
||||
*/
|
||||
static function getUserWater()
|
||||
{
|
||||
return self::tab(TabConf::$fa_wechatuser)
|
||||
->where('openid', index_user_openid())
|
||||
->value('water_drop_balance');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user