123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- <?php
- namespace app\common\service;
- use GuzzleHttp\Client;
- use think\Db;
- use think\Exception;
- class UserService
- {
- private $model = null;
- /**
- * 初始化方法
- */
- public function __construct()
- {
- $this->model = Db::name('user');
- }
- /**
- * 用户换绑
- * @return void
- */
- public function userBindCompany($params=[])
- {
- $result = [
- 'status' => 1,
- 'msg' => '操作成功',
- 'data' => [],
- ];
- try {
- $userId = isset($params['user_id']) ? $params['user_id'] : 0;
- $companyId = isset($params['company_id']) ? $params['company_id'] : 0;
- $where['id'] = $userId;
- $user = Db::name('user')->where($where['id'])->find();
- if (!empty($user)) {
- if ($user['company_id'] != $companyId) {
- $userData['company_id'] = $companyId;
- $userData['updatetime'] = time();
- $userRes = Db::name('user')->where($where['id'])->update($userData);
- if (!$userRes) {
- throw new Exception('操作失败');
- }
- }
- }
- } catch (Exception $e) {
- $result['status'] = 0;
- $result['msg'] = $e->getMessage();
- }
- return $result;
- }
- /**
- * 用户绑定门店和钱包
- * @return void
- */
- public function userWallet($params=[])
- {
- $result = [
- 'status' => 1,
- 'msg' => '操作成功',
- 'data' => [],
- ];
- try {
- $userId = isset($params['user_id']) ? $params['user_id'] : 0;
- $companyId = isset($params['company_id']) ? $params['company_id'] : 0;
- $comefrom = isset($params['comefrom']) ? $params['comefrom'] : '';
- $bindRes = $this->userBindCompany($params);//绑定门店
- if (!$bindRes['status']) {
- throw new Exception($bindRes['msg']);
- }
- $where['user_id'] = $userId;
- $where['company_id'] = $companyId;
- $userWallet = Db::name('user_wallet')->where($where['id'])->find();
- $time = time();
- if (empty($userWallet)) {
- $userWalletData = [
- 'user_id' => $userId,
- 'company_id' => $companyId,
- 'money' => 0.00,
- 'createtime' => $time,
- 'comefrom' => $comefrom,
- ];
- $userWalletRes = Db::name('user_wallet')->insertGetId($userWalletData);
- if (!$userWalletRes) {
- throw new Exception('生成钱包失败');
- }
- }
- } catch (Exception $e) {
- $result['status'] = 0;
- $result['msg'] = $e->getMessage();
- }
- return $result;
- }
- /**
- * 微信消息发送
- * @return void
- */
- public function wechatMessageSend($params=[])
- {
- $result = [
- 'status' => 1,
- 'msg' => '操作成功',
- 'data' => [],
- ];
- try {
- $preOrderId = isset($params['pre_order_id']) ? $params['pre_order_id'] : 0;
- $p = 'pre_order';
- $u = 'user';
- $field = $p.'.*,'.$u.'.mini_openid';
- $where[$p.'.id'] = $preOrderId;
- $preOrder = Db::name($p)->alias($p)->field($field)
- ->join($u,$u.'.id = '.$p.'.user_id','LEFT')
- ->where($where)->find();
- if (empty($preOrder)) {
- throw new Exception('未找到预约信息');
- }
- $client = new Client();
- $tk = getAccessToken();
- /*联系人: {{name.DATA}}
- 联系电话: {{phone_number.DATA}}
- 车牌号: {{car_number.DATA}}
- 预约时间: {{date.DATA}}*/
- $uri = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token='.$tk;
- $openId = $preOrder['mini_openid'];
- $wechatTemplate = config('param.wechat_template');
- $preOrderMsg = isset($wechatTemplate['pre_order']) ? $wechatTemplate['pre_order'] : [];
- $data = [//数据内容
- "name" => ["value" => $preOrder['name']],
- "phone_number" => ["value" => $preOrder['mobile']],
- "car_number" => ["value" => $preOrder['car_number']],
- "date" => ["value" => date('Y年m月d日 H:i:s',$preOrder['pre_time'])],
- ];
- $jsonData = [
- "touser" => $openId, //openid
- "template_id" => $preOrderMsg['template_id'], //模版ID
- "page" => $preOrderMsg['page'], //跳转地址
- "miniprogram_state" => $preOrderMsg['miniprogram_state'],//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
- "lang" => $preOrderMsg['lang'], //支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
- "data" => $data, //数据
- ];
- $res = $client->request('POST', $uri, ['json' => $jsonData]);
- $returnRes = $res->getBody()->getContents();
- if (!$returnRes['errcode']) {
- throw new Exception($returnRes['errmsg']);
- }
- } catch (Exception $e) {
- $result['status'] = 0;
- $result['msg'] = $e->getMessage();
- }
- return $result;
- }
- }
|