Commit 24e95ba7 authored by liuyuzhen's avatar liuyuzhen

Merge branch 'master_dev' of git.shenbd.com:qm-develop/shenbd into lyz

parents 1f6afbbd d88f642c
...@@ -42,7 +42,7 @@ class GoodsController extends \Our\Controller_AbstractIndex { ...@@ -42,7 +42,7 @@ class GoodsController extends \Our\Controller_AbstractIndex {
public function testAction(){ public function testAction(){
//$info = $this->goodsService->recommend(); //$info = $this->goodsService->recommend();
//\Business\Goods\GoodsCommonServiceModel::getInstance()->saleGoods(); //\Business\Goods\GoodsCommonServiceModel::getInstance()->saleGoods();
\Business\Goods\EvaluationServiceModel::getInstance()->autoEvaluate(); \Business\Store\StoreServiceModel::getInstance()->pendingItemsInform();
} }
public function getAttrsAction(){ public function getAttrsAction(){
......
...@@ -715,7 +715,7 @@ class OrderConfirmUtil { ...@@ -715,7 +715,7 @@ class OrderConfirmUtil {
$msg_tpl = $settingDAO->getListCache(array('wxapp_order_create_tpl'))['wxapp_order_create_tpl']; $msg_tpl = $settingDAO->getListCache(array('wxapp_order_create_tpl'))['wxapp_order_create_tpl'];
$goods_str = ''; $goods_str = '';
if(count($goods_datas)>1) { if(count($goods_datas)>1) {
$goods_str .= $goods_datas[0].'等' .count($goods_datas).'商品'; $goods_str .= $goods_datas[0].'等' .count($goods_datas).'商品';
} else { } else {
$goods_str .= $goods_datas[0]; $goods_str .= $goods_datas[0];
} }
......
...@@ -80,6 +80,14 @@ class SmsTemplateConst{ ...@@ -80,6 +80,14 @@ class SmsTemplateConst{
'parameters'=>array( 'parameters'=>array(
'storename' 'storename'
) )
),
//目前共有${storeCount}家商户注册待审核,${weiCount}家微信支付待处理状态(需结合微信服务商状态)。
'storeWaitCheck'=> array(
'templateId'=>'SMS_153996044',
'parameters'=>array(
'storeCount',
'weiCount'
)
) )
); );
......
...@@ -147,12 +147,14 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -147,12 +147,14 @@ class OrderServiceModel extends \Business\AbstractModel
$settingDAO = \DAO\SettingModel::getInstance(); $settingDAO = \DAO\SettingModel::getInstance();
$access_token = $this->getLitAccesstoken(); $access_token = $this->getLitAccesstoken();
$where = array('msg_status'=>1, 'payment_type'=>1, 'order_state'=>array('gt',10), 'prepay_id'=> array('neq', $where = array('msg_status'=>array('elt', 1), 'payment_type'=>5, 'order_state'=>array('gt',10), 'prepay_id'=>
'')); array('neq',
''), 'payment_time'=>array('gt', TIMESTAMP-7*24*60*60));
$wxapp_templates = $settingDAO->getListCache(array('wxapp_order_paysucc_tpl', 'wxapp_order_shipping_tpl', 'wxapp_order_receive_tpl')); $wxapp_templates = $settingDAO->getListCache(array('wxapp_order_paysucc_tpl', 'wxapp_order_shipping_tpl', 'wxapp_order_receive_tpl'));
if($list = $model->getList($where, 'order_id,order_sn,store_name,buyer_id,order_amount,payment_time, order_state, prepay_id', 0, 10, array('payment_time','asc'))) { if($list = $model->getList($where, 'order_id,order_sn,store_name,buyer_id,order_amount,payment_time, order_state, prepay_id', 0, 10, array('payment_time'=>'asc'))) {
echo 'order num: '.count($list)."\n";
foreach ($list as $order) { foreach ($list as $order) {
if($access_token && ($member = $model_member->getInfo(array('member_id'=>$order['buyer_id']), 'member_id,member_wxopenid'))){ if($access_token && ($member = $model_member->getOneByMemberId($order['buyer_id'], 'member_id,member_wxappopenid'))){
$where = array('order_id'=>$order['order_id']); $where = array('order_id'=>$order['order_id']);
$goods_datas = $model_order_goods->getOrderGoods($where, 'order_id, goods_name'); $goods_datas = $model_order_goods->getOrderGoods($where, 'order_id, goods_name');
$msg_tpl = $wxapp_templates['wxapp_order_paysucc_tpl']; $msg_tpl = $wxapp_templates['wxapp_order_paysucc_tpl'];
...@@ -162,18 +164,27 @@ class OrderServiceModel extends \Business\AbstractModel ...@@ -162,18 +164,27 @@ class OrderServiceModel extends \Business\AbstractModel
} else { } else {
$goods_str .= $goods_datas[0]['goods_name']; $goods_str .= $goods_datas[0]['goods_name'];
} }
$req_data = array('touser'=>$member['member_wxopenid'], 'template_id'=> $msg_tpl, $req_data = array('touser'=>$member['member_wxappopenid'], 'template_id'=> $msg_tpl,
'form_id'=> $order['prepay_id'], 'form_id'=> $order['prepay_id'],
'data'=>array( 'data'=>array(
array('keyword1'=>array('value'=>$order['order_sn'])), 'keyword1'=>array('value'=>$order['order_sn']),
array('keyword2'=>array('value'=>$order['store_name'])), 'keyword2'=>array('value'=>$order['store_name']),
array('keyword3'=>array('value'=>$goods_str)), 'keyword3'=>array('value'=>$goods_str),
array('keyword4'=>array('value'=>number_format($order['order_amount']/100, 2)).'元'), 'keyword4'=>array('value'=>number_format($order['order_amount']/100, 2).'元'),
array('keyword5'=>array('value'=>date('Y-m-d H:i',$order['payment_time']))), 'keyword5'=>array('value'=>date('Y-m-d H:i',$order['payment_time'])),
array('keyword6'=>array('value'=>'已付款')), 'keyword6'=>array('value'=>'已付款'),
)); ));
\Our\Log::getInstance()->write(json_encode($req_data), '/data/log/apptest');
$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='; $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=';
$result = $this->sendurl($url, $access_token, $req_data, 'post');
if($result = $this->sendurl($url, $access_token, json_encode($req_data), 'post')) {
$json = json_decode($result, true);
if($json['errmsg']=='ok') {
$model->updateByOrderId(array('msg_status'=>1), $order['order_id']);
echo 'order[' . $order['order_id'] .'] send payment succ'."\n";
}
}
} }
} }
} }
......
...@@ -1230,7 +1230,15 @@ class StoreServiceModel extends \Business\AbstractModel{ ...@@ -1230,7 +1230,15 @@ class StoreServiceModel extends \Business\AbstractModel{
public function updateStoreTotalDeposit(){ public function updateStoreTotalDeposit(){
\DAO\StoreModel::getInstance()->updateStoreDeposit(); \DAO\StoreModel::getInstance()->updateStoreDeposit();
} }
public function pendingItemsInform() {
$storePaymentDao = \DAO\Store\StorePaymentModel::getInstance();
$weiCount = $storePaymentDao->getStorePaymentCount(array('payment_type'=>0,'status'=>0));
$storeRegisterDao = \DAO\Store\QmStoreRegisterModel::getInstance();
$storeCount = $storeRegisterDao->getWaitCheckCount(array('state'=>0));
$settingDAO = \DAO\SettingModel::getInstance();
$phone = $settingDAO->getListCache(array('pending_items_inform_tel'))['pending_items_inform_tel'];
\DAO\ShortMessageModel::getInstance()->sendMessageSmsForPlatform($phone,'storeWaitCheck',array('storeCount'=>$storeCount,'weiCount'=>$weiCount));
}
/** /**
*/ */
private static $_instance = null; private static $_instance = null;
......
...@@ -328,7 +328,7 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -328,7 +328,7 @@ class MemberServiceModel extends \Business\AbstractModel
return $result; return $result;
} }
private function saveWxInfoMemberInfo($where,$openid=null){ private function saveWxInfoMemberInfo($where,$openid=null, $wxappopenid=null){
$memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName); $memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName);
//构造需要保存的会员信息 //构造需要保存的会员信息
...@@ -336,6 +336,9 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -336,6 +336,9 @@ class MemberServiceModel extends \Business\AbstractModel
if($openid){ if($openid){
$member['member_mobile'] = $openid; $member['member_mobile'] = $openid;
} }
if($wxappopenid) {
$member['member_wxappopenid'] = $wxappopenid;
}
$result = $memberDao->addInfo($member); $result = $memberDao->addInfo($member);
return $result; return $result;
} }
...@@ -834,7 +837,7 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -834,7 +837,7 @@ class MemberServiceModel extends \Business\AbstractModel
return false; return false;
} }
public function checkSaveWechatInfo($where){ public function checkSaveWechatInfo($where, $wxappopenid = ''){
$memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName); $memberDao = \DAO\MemberModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$memberMappingDao = \DAO\MemberMappingModel::getInstance(\Our\DbNameConst::masterDBConnectName); $memberMappingDao = \DAO\MemberMappingModel::getInstance(\Our\DbNameConst::masterDBConnectName);
if($where['userType'] == \Our\ApiConst::wechatUserType){ if($where['userType'] == \Our\ApiConst::wechatUserType){
...@@ -851,7 +854,7 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -851,7 +854,7 @@ class MemberServiceModel extends \Business\AbstractModel
//$memberMapping = \Our\RedisHelper::cachedFunction(\Redis\Db0\MemberMappingRedisModel::getInstance(),array(&$memberMappingDao, 'find'),array($condition,'member_id'),\Our\ApiConst::tenDaySecond); //$memberMapping = \Our\RedisHelper::cachedFunction(\Redis\Db0\MemberMappingRedisModel::getInstance(),array(&$memberMappingDao, 'find'),array($condition,'member_id'),\Our\ApiConst::tenDaySecond);
if($memberMappings){ if($memberMappings){
$memberIds = array_column($memberMappings,'member_id'); $memberIds = array_column($memberMappings,'member_id');
$member = $memberDao->getMemberForLogin($memberIds); $member = $memberDao->getMemberForLogin($memberIds, $wxappopenid);
if($where['userType'] == \Our\ApiConst::wechatUserType){ if($where['userType'] == \Our\ApiConst::wechatUserType){
$this->checkMemberMappingExistLogin($member['member_id'],$condition['openid'] ,$where['userType']); $this->checkMemberMappingExistLogin($member['member_id'],$condition['openid'] ,$where['userType']);
} }
...@@ -911,13 +914,14 @@ class MemberServiceModel extends \Business\AbstractModel ...@@ -911,13 +914,14 @@ class MemberServiceModel extends \Business\AbstractModel
$where['session_key'] = $authInfo['session_key']; $where['session_key'] = $authInfo['session_key'];
$this->checkWechatInfo($where,$authInfo); $this->checkWechatInfo($where,$authInfo);
$returnMember = $this->checkSaveWechatInfo($where); $returnMember = $this->checkSaveWechatInfo($where, $authInfo['openid']);
if($returnMember){ if($returnMember){
return $returnMember; return $returnMember;
} }
$db->doTransaction(); $db->doTransaction();
$openid = $this->getUnionId($where['encryptedData'],$where['iv'],$where['session_key']); $openid = $this->getUnionId($where['encryptedData'],$where['iv'],$where['session_key']);
$memberId = $this->saveWxInfoMemberInfo($where,$openid); $wxappOpenid = $authInfo['session_key'];
$memberId = $this->saveWxInfoMemberInfo($where, $openid, $wxappOpenid);
if(!$memberId){ if(!$memberId){
$db->doRollback(); $db->doRollback();
......
...@@ -21,7 +21,7 @@ class MemberModel extends \DAO\AbstractModel ...@@ -21,7 +21,7 @@ class MemberModel extends \DAO\AbstractModel
protected $_tableName = 'han_member'; protected $_tableName = 'han_member';
//有效用户返回数据 //有效用户返回数据
private $availMemberColumn = array('member_id', 'member_name', 'member_truename', 'member_avatar', 'member_sex', 'member_birthday', 'member_mobile', 'member_mobile_bind', 'member_qq', 'member_qqopenid', 'member_qqinfo', 'member_wxinfo', 'member_wxopenid', 'member_sinaopenid', 'member_sinainfo', 'member_points', 'member_state', 'member_quicklink', 'member_exppoints', 'store_id', 'iswx', 'agree_flag', 'seller_id', 'diliveryman_id', 'member_tag_ids', 'member_group_ids', 'is_teacher', 'member_email', 'member_email_bind','is_wxsend'); private $availMemberColumn = array('member_id', 'member_name', 'member_truename', 'member_avatar', 'member_sex', 'member_birthday', 'member_mobile', 'member_mobile_bind', 'member_qq', 'member_qqopenid', 'member_qqinfo', 'member_wxinfo', 'member_wxopenid', 'member_sinaopenid', 'member_sinainfo', 'member_points', 'member_state', 'member_quicklink', 'member_exppoints', 'store_id', 'iswx', 'agree_flag', 'seller_id', 'diliveryman_id', 'member_tag_ids', 'member_group_ids', 'is_teacher', 'member_email', 'member_email_bind', 'is_wxsend', 'member_wxappopenid');
//有效用户返回数据 //有效用户返回数据
...@@ -229,6 +229,7 @@ class MemberModel extends \DAO\AbstractModel ...@@ -229,6 +229,7 @@ class MemberModel extends \DAO\AbstractModel
'memberMobileBind' => (int)$member['member_mobile_bind'], 'memberMobileBind' => (int)$member['member_mobile_bind'],
'memberWxinfo' => isset($member['member_wxinfo'])&&$member['member_wxinfo']? unserialize($member['member_wxinfo']) : new \stdClass(), 'memberWxinfo' => isset($member['member_wxinfo'])&&$member['member_wxinfo']? unserialize($member['member_wxinfo']) : new \stdClass(),
'memberWxopenid' => $member['member_wxopenid'], 'memberWxopenid' => $member['member_wxopenid'],
'memberWxappopenid' => $member['member_wxappopenid'],
'sellerId' => (int)$member['seller_id'], 'sellerId' => (int)$member['seller_id'],
'diliverymanId' => (int)$member['diliveryman_id'], 'diliverymanId' => (int)$member['diliveryman_id'],
'storeId' => (int)$member['store_id'], 'storeId' => (int)$member['store_id'],
...@@ -251,6 +252,7 @@ class MemberModel extends \DAO\AbstractModel ...@@ -251,6 +252,7 @@ class MemberModel extends \DAO\AbstractModel
'memberMobileBind' => $member['member_mobile_bind'], 'memberMobileBind' => $member['member_mobile_bind'],
'memberWxinfo' => isset($member['member_wxinfo']) ? unserialize($member['member_wxinfo']) : new \stdClass(), 'memberWxinfo' => isset($member['member_wxinfo']) ? unserialize($member['member_wxinfo']) : new \stdClass(),
'memberWxopenid' => $member['member_wxopenid'], 'memberWxopenid' => $member['member_wxopenid'],
'memberWxappopenid' => $member['member_wxappopenid'],
'sellerId' => $member['seller_id'], 'sellerId' => $member['seller_id'],
'diliverymanId' => $member['diliveryman_id'], 'diliverymanId' => $member['diliveryman_id'],
'storeId' => $member['store_id'], 'storeId' => $member['store_id'],
...@@ -556,7 +558,16 @@ class MemberModel extends \DAO\AbstractModel ...@@ -556,7 +558,16 @@ class MemberModel extends \DAO\AbstractModel
return $member; return $member;
} }
public function getMemberForLogin($memberIds){ /**
* 获取登录用户
* @param $memberIds
* @param string $wxappopenid
* @return array
* User: King <358887571@qq.com>
* Date: 2018/12/29 0029
* Time: 下午 3:20
*/
public function getMemberForLogin($memberIds, $wxappopenid = ''){
$member = array(); $member = array();
$memberCon['member_id'] = array('in',$memberIds); $memberCon['member_id'] = array('in',$memberIds);
$memberCon['member_state'] = \Our\ApiConst::one; $memberCon['member_state'] = \Our\ApiConst::one;
...@@ -574,6 +585,10 @@ class MemberModel extends \DAO\AbstractModel ...@@ -574,6 +585,10 @@ class MemberModel extends \DAO\AbstractModel
if(empty($member)){ if(empty($member)){
$member = $memberList[0]; $member = $memberList[0];
} }
if($wxappopenid && !$member['member_wxappopenid']) {
$this->updateInfo(array('member_wxappopenid'=>$wxappopenid), array('member_id'=>$member['member_id']));
}
$member['member_wxappopenid'] = $wxappopenid;
$memberAvatarUrl = $this->getMemberAvatarUrl($member['member_id'], $member['member_avatar']); $memberAvatarUrl = $this->getMemberAvatarUrl($member['member_id'], $member['member_avatar']);
$member['memberAvatarUrl'] = $memberAvatarUrl; $member['memberAvatarUrl'] = $memberAvatarUrl;
} }
......
<?php
namespace DAO\Store;
class QmStoreRegisterModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_qm_store_register';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'register_id';
public function init()
{
}
public function getStoreRegisterCount($where) {
return $this->getCountByWhere($where);
}
public function getWaitCheckCount($where) {
$this->setDb($this->dbName);
$result=$this->db->select('count(DISTINCT han_qm_store_register.register_id) AS count')->from($this->_tableName)->join('han_qm_store_register_file','han_qm_store_register.register_id = han_qm_store_register_file.register_id','inner')->where($where)->fetchAll();
return $result ? $result[0]['count'] : 0;
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 获取类实例
*
* @return \DAO\UserModel
*/
public static function getInstance($dbName = \Our\DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
<?php
namespace DAO\Store;
class StorePaymentModel extends \DAO\AbstractModel
{
/**
* 表名
*
* @var string
*/
protected $_tableName = 'han_store_payment';
/**
* 主键
*
* @var string
*/
protected $_primaryKey = 'payment_id';
public function init()
{
}
public function getStorePaymentCount($where) {
return $this->getCountByWhere($where);
}
/**
* 类实例
*
* @var \DAO\UserModel
*/
private static $_instance = null;
/**
* 获取类实例
*
* @return \DAO\UserModel
*/
public static function getInstance($dbName = \Our\DbNameConst::salveDBConnectName)
{
if (!(self::$_instance instanceof self)) {
self::$_instance = new self($dbName);
}
return self::$_instance;
}
}
...@@ -80,6 +80,9 @@ class SettingRedisModel extends \Redis\Db1\AbstractModel { ...@@ -80,6 +80,9 @@ class SettingRedisModel extends \Redis\Db1\AbstractModel {
public function tableKeyExists($h){ public function tableKeyExists($h){
return $this->exists($this->calcKey($h)); return $this->exists($this->calcKey($h));
} }
public function tableHGAll($h){
return $this->hGetAll($this->calcKey($h));
}
/** /**
* 类实例 * 类实例
* *
......
...@@ -41,9 +41,11 @@ class cliOrderSendTemplateMessage extends basecli ...@@ -41,9 +41,11 @@ class cliOrderSendTemplateMessage extends basecli
} }
} }
private function autoSendMessage(){ protected function autoSendMessage(){
$service = \Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName); $service = \Business\Order\OrderServiceModel::getInstance(\Our\DbNameConst::masterDBConnectName);
$service->baseDir = \Our\Common::getConfig('out.config'); $service->baseDir = \Our\Common::getConfig('out.config');
echo "autoSendMessage:\n";
$service->sendTemplateMessage();
} }
protected function _runCli() protected function _runCli()
...@@ -61,6 +63,7 @@ class cliOrderSendTemplateMessage extends basecli ...@@ -61,6 +63,7 @@ class cliOrderSendTemplateMessage extends basecli
exit; exit;
} }
$this->lockFileName = $lockDir . '/orderSendTemplateMessage.locks'; $this->lockFileName = $lockDir . '/orderSendTemplateMessage.locks';
@unlink($this->lockFileName);
if( file_exists( $this->lockFileName ) ) if( file_exists( $this->lockFileName ) )
{ {
$stat = stat($this->lockFileName); $stat = stat($this->lockFileName);
...@@ -84,7 +87,7 @@ class cliOrderSendTemplateMessage extends basecli ...@@ -84,7 +87,7 @@ class cliOrderSendTemplateMessage extends basecli
} }
} }
$oCli = new cliOrderConfirm(TRUE); $oCli = new cliOrderSendTemplateMessage(TRUE);
EXIT; EXIT;
?> ?>
<?php <?php
/** /**
* 推送10秒推送一次 *
* 推送10秒推送一次 * 推送10秒推送一次
* *
* @author chenjiebin <sjlinyu@qq.com> * @author chenjiebin <sjlinyu@qq.com>
...@@ -17,9 +17,11 @@ $redis->connect($conf['host'], $conf['port']); ...@@ -17,9 +17,11 @@ $redis->connect($conf['host'], $conf['port']);
if(!empty($conf['password'])){ if(!empty($conf['password'])){
$redis->auth($conf['password']); $redis->auth($conf['password']);
} }
$result=$redis->subscribe(array('pushcenter'), 'callback'); //ini_set('default_socket_timeout', -1);(所有长连接不超时)
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$result=$redis->subscribe(array('redisPublish'), 'callback');
function printTest($meg){ function printTest($meg){
echo $meg; echo $meg.'213';
} }
function callback($instance,$channelName,$message){ function callback($instance,$channelName,$message){
printTest($message); printTest($message);
......
<?php
/**
* 待办事务提醒
* 执行时间:8:50~11:00~15:00~17:30
*/
define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../../../')); //指向public的上一级
require APPLICATION_PATH . '/scripts/crontab/common.php';
\Business\Store\StoreServiceModel::getInstance()->pendingItemsInform();
echo '发送成功';
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment