Merge remote-tracking branch 'origin/master'
This commit is contained in:
553
application/api/controller/Wechatprogram.php
Normal file
553
application/api/controller/Wechatprogram.php
Normal file
@@ -0,0 +1,553 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
use app\api\controller\Base;
|
||||
use think\Db;
|
||||
/**
|
||||
* @title 微信小程序相关方法
|
||||
*/
|
||||
class Wechatprogram extends Base
|
||||
{
|
||||
|
||||
private $sAppID = 'wxe07868a09209e18b';
|
||||
private $sAppSecret = '77bebfbae54b78bf0c79eb3ddd05be87';
|
||||
private $sCode2SessionUrl = 'https://api.weixin.qq.com/sns/jscode2session';//登录凭证验证
|
||||
|
||||
public function __construct(\think\Request $request = null) {
|
||||
parent::__construct($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录微信的openid和unionid
|
||||
*/
|
||||
public function getLogin(){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//获取微信登录code
|
||||
$sLoginCode = empty($aParam['login_code']) ? '' : $aParam['login_code'];
|
||||
if(empty($sLoginCode)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the login code']);
|
||||
}
|
||||
|
||||
//调用接口
|
||||
//url拼接
|
||||
$sCode2SessionUrl = $this->sCode2SessionUrl;
|
||||
$sCode2SessionUrl .= '?appid='.$this->sAppID.'&secret='.$this->sAppSecret.'&js_code='.$sLoginCode.'&grant_type=GRANT_TYPE';
|
||||
$aResult = json_decode(myGet($sCode2SessionUrl),true);
|
||||
if(isset($aResult['errcode'])){
|
||||
$sMsg = empty($aResult['errmsg']) ? 'Interface request error:'.$aResult['errcode'] : $aResult['errmsg'];
|
||||
return json_encode(['status' => 3,'msg' => $sMsg]);
|
||||
}
|
||||
|
||||
//获取微信登录openid
|
||||
$sOpenId= empty($aResult['openid']) ? '' : trim($aResult['openid']);
|
||||
if(empty($sOpenId)){
|
||||
return json_encode(['status' => 4,'msg' => 'User login information not obtained']);
|
||||
}
|
||||
|
||||
//根绝openid获取用户信息
|
||||
$aData = [];
|
||||
$aUser = json_decode($this->getUser(['openid' => $sOpenId,'is_select_role' => 2]),true);
|
||||
$aUser = empty($aUser['data']) ? [] : $aUser['data'];
|
||||
if(!empty($aUser)){
|
||||
$aData['user'] = $aUser;
|
||||
}
|
||||
$aData['wechat'] = $aResult;
|
||||
return json_encode(['status' => 1,'msg' => 'success','data' => $aData]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据OPENID查询用户信息
|
||||
*/
|
||||
public function getUser($aParam = []){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//获取用户ID
|
||||
$iUserId= empty($aParam['user_id']) ? '' : $aParam['user_id'];
|
||||
|
||||
//获取微信登录openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : $aParam['openid'];
|
||||
if(empty($sOpenId) && empty($iUserId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the login openid']);
|
||||
}
|
||||
|
||||
//查询用户是否存在
|
||||
$aWhere = ['state' => 0];
|
||||
if(!empty($iUserId)){
|
||||
$aWhere['user_id'] = $iUserId;
|
||||
}
|
||||
if(!empty($sOpenId)){
|
||||
$aWhere['openid'] = $sOpenId;
|
||||
}
|
||||
$aUser = Db::name('user')->field('user_id,account,openid,icon,email,type')->where($aWhere)->find();
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 2,'msg' => 'No user information found']);
|
||||
}
|
||||
|
||||
//判断是否查询用户角色
|
||||
$iIsSelectRole = empty($aParam['is_select_role']) ? 1 : $aParam['is_select_role'];
|
||||
if($iIsSelectRole == 1){
|
||||
$aUser['roles'] = $this->getUserRoles($aUser);
|
||||
}
|
||||
return json_encode(['status' => 1,'msg' => 'success','data' => $aUser]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户名密码绑定openid
|
||||
*/
|
||||
public function bindAccount($aParam = []){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//账号名
|
||||
$sAccount= empty($aParam['account']) ? '' : trim($aParam['account']);
|
||||
if(empty($sAccount)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
|
||||
}
|
||||
//密码
|
||||
$sPassword= empty($aParam['password']) ? '' : trim($aParam['password']);
|
||||
if(empty($sPassword)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the password']);
|
||||
}
|
||||
//openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : trim($aParam['openid']);
|
||||
// //unionid
|
||||
// $sUnionId= empty($aParam['unionid']) ? '' : trim($aParam['unionid']);
|
||||
if(empty($sOpenId)){// && empty($sUnionId)
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the login openid/unionid']);
|
||||
}
|
||||
|
||||
//查询用户是否存在
|
||||
$aWhere = ['account|email' => $sAccount,'state' => 0];
|
||||
$aUser = Db::name('user')->field('user_id,account,password,openid')->where($aWhere)->find();
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'Login account does not exist, please confirm']);
|
||||
}
|
||||
//验证密码是否一致
|
||||
$sPassword = md5($sPassword);
|
||||
if($aUser['password'] != $sPassword){
|
||||
return json_encode(['status' => 4,'msg' => 'Login password input error, please confirm']);
|
||||
}
|
||||
//验证是否绑定账号
|
||||
if(!empty($aUser['openid'])){// || !empty($aUser['unionid'])
|
||||
return json_encode(['status' => 5,'msg' => 'Login account already linked to WeChat account']);
|
||||
}
|
||||
//验证openid是否被绑定
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
$aWhere = ['state' => 0,'user_id' => ['<>',$iUserId]];
|
||||
// if(!empty($sUnionId)){
|
||||
// $aWhere['unionid'] = $sUnionId;
|
||||
// }
|
||||
if(!empty($sOpenId)){
|
||||
$aWhere['openid'] = $sOpenId;
|
||||
}
|
||||
$aUserOpenId = Db::name('user')->field('user_id')->where($aWhere)->find();
|
||||
if(!empty($aUserOpenId)){
|
||||
return json_encode(['status' => 6,'msg' => 'This WeChat account has been bound']);
|
||||
}
|
||||
|
||||
//更新
|
||||
$aUpdate = [];
|
||||
// if(!empty($sUnionId)){
|
||||
// $aUpdate['unionid'] = $sUnionId;
|
||||
// }
|
||||
if(!empty($sOpenId)){
|
||||
$aUpdate['openid'] = $sOpenId;
|
||||
}
|
||||
if(empty($aUpdate)){
|
||||
return json_encode(['status' => 7,'msg' => 'Update data to empty']);
|
||||
}
|
||||
|
||||
//执行操作
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0];
|
||||
$result = Db::name('user')->where($aWhere)->limit(1)->update($aUpdate);
|
||||
if($result === false){
|
||||
return json_encode(['status' => 8,'msg' => "Binding failed"]);
|
||||
}
|
||||
// $aUser['unionid'] = empty($aUpdate['unionid']) ? $aUser['unionid'] : $aUpdate['unionid'];
|
||||
$aUser['openid'] = empty($aUpdate['openid']) ? $aUser['openid'] : $aUpdate['openid'];
|
||||
return json_encode(['status' => 1,'msg' => 'Binding successful','data' => $aUser]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户名密码解绑openid
|
||||
*/
|
||||
public function unbindAccount(){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//账号名
|
||||
$sAccount= empty($aParam['account']) ? '' : trim($aParam['account']);
|
||||
if(empty($sAccount)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your account']);
|
||||
}
|
||||
//密码
|
||||
$sPassword= empty($aParam['password']) ? '' : trim($aParam['password']);
|
||||
if(empty($sPassword)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the password']);
|
||||
}
|
||||
//openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : trim($aParam['openid']);
|
||||
//unionid
|
||||
// $sUnionId= empty($aParam['unionid']) ? '' : trim($aParam['unionid']);
|
||||
if(empty($sOpenId)){// && empty($sUnionId)
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the login openid/unionid']);
|
||||
}
|
||||
|
||||
//查询用户是否存在
|
||||
$aWhere = ['account|email' => $sAccount,'state' => 0];
|
||||
$aUser = Db::name('user')->field('user_id,account,password,openid')->where($aWhere)->find();
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'Login account does not exist, please confirm']);
|
||||
}
|
||||
//验证密码是否一致
|
||||
$sPassword = md5($sPassword);
|
||||
if($aUser['password'] != $sPassword){
|
||||
return json_encode(['status' => 4,'msg' => 'Login password input error, please confirm']);
|
||||
}
|
||||
//验证是否绑定账号
|
||||
if(empty($aUser['openid'])){// && empty($aUser['unionid'])
|
||||
return json_encode(['status' => 5,'msg' => 'This account is not bound to any mini program, there is no need to unbind it']);
|
||||
}
|
||||
//验证unionid是否相等
|
||||
// if(!empty($sUnionId) && !empty($aUser['unionid']) & $sUnionId != $aUser['unionid']){
|
||||
// return json_encode(['status' => 6,'msg' => 'Unbind account not bound']);
|
||||
// }
|
||||
//验证openid是否相等
|
||||
if(!empty($sOpenId) && !empty($aUser['openid']) & $sOpenId != $aUser['openid']){
|
||||
return json_encode(['status' => 7,'msg' => 'Unbind account not bound']);
|
||||
}
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
|
||||
//执行操作
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0];
|
||||
$aUpdate = ['openid' => ''];//,'unionid' => ''
|
||||
$result = Db::name('user')->where($aWhere)->limit(1)->update($aUpdate);
|
||||
if($result === false){
|
||||
return json_encode(['status' => 8,'msg' => "Unbinding failed"]);
|
||||
}
|
||||
$aUpdate['user_id'] = $iUserId;
|
||||
return json_encode(['status' => 1,'msg' => 'Unbound successfully','data' => $aUpdate]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户账号注册
|
||||
*/
|
||||
public function registerAccount(){
|
||||
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//邮箱
|
||||
$sEmail = empty($aParam['email']) ? '' : trim($aParam['email']);
|
||||
if(empty($sEmail)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your email']);
|
||||
}
|
||||
//密码
|
||||
$sPassword= empty($aParam['password']) ? '' : trim($aParam['password']);
|
||||
if(empty($sPassword)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the password']);
|
||||
}
|
||||
//openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : trim($aParam['openid']);
|
||||
if(empty($sOpenId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter the login openid/unionid']);
|
||||
}
|
||||
|
||||
//查询用户是否存在
|
||||
$aWhere = ['account|email' => $sEmail,'state' => 0];
|
||||
$aUser = Db::name('user')->field('user_id')->where($aWhere)->find();
|
||||
if(!empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'The registered account already exists, please confirm']);
|
||||
}
|
||||
//验证OPENID是否绑定
|
||||
$aWhere = ['openid' => $sOpenId,'state' => 0];
|
||||
$aUser = Db::name('user')->field('user_id')->where($aWhere)->find();
|
||||
if(!empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'WeChat account has been bound']);
|
||||
}
|
||||
|
||||
//数据插入
|
||||
Db::startTrans();
|
||||
//用户主表
|
||||
$aInsert = ['account' => $sEmail,'email' => $sEmail,'password' => md5($sPassword),'ctime' => time(),'openid' => $sOpenId];
|
||||
$iId = Db::name('user')->insertGetId($aInsert);
|
||||
if(empty($iId)){
|
||||
return json_encode(['status' => 4,'msg' => 'Registration failed']);
|
||||
}
|
||||
//用户附属表
|
||||
$aReviewInsert = ['reviewer_id' => $iId,'test_from' => 'wechat_register'];
|
||||
$iInfoId = Db::name('user_reviewer_info')->insertGetId($aReviewInsert);
|
||||
if(empty($iInfoId)){
|
||||
return json_encode(['status' => 5,'msg' => 'Registration failed']);
|
||||
}
|
||||
Db::commit();
|
||||
$aInsert['user_id'] = $iId;
|
||||
return json_encode(['status' => 1,'msg' => 'registered successfully','data' => $aInsert]);
|
||||
}
|
||||
/**
|
||||
* 获取用户身份
|
||||
*/
|
||||
private function getUserRoles($aUser = []){
|
||||
if(empty($aUser)){
|
||||
return [];
|
||||
}
|
||||
|
||||
//获取账号名
|
||||
$sAccount = empty($aUser['account']) ? '' : trim($aUser['account']);
|
||||
if($aUser['type'] == 2) {
|
||||
$aRoles = ['editor'];
|
||||
if($sAccount=="liuna" || $sAccount=="zhuwenjing"){
|
||||
array_push($aRoles, 'superadmin');
|
||||
}
|
||||
return $aRoles;
|
||||
}
|
||||
|
||||
$aRoles = ['author'];
|
||||
//查询是否是审稿人
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
$aWhere = ['reviewer_id' => $iUserId,'state' => 0];
|
||||
$aUserInfo = Db::name('reviewer_to_journal')->field('rtj_id')->where($aWhere)->find();
|
||||
if(!empty($aUserInfo)) {
|
||||
array_push($aRoles,'reviewer');
|
||||
}
|
||||
|
||||
//青年编委
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0];
|
||||
$aUserInfo = Db::name('user_to_yboard')->field('user_id')->where($aWhere)->find();
|
||||
if(!empty($aUserInfo)) {
|
||||
array_push($aRoles,'yboard');
|
||||
}
|
||||
//主编与期刊
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0];
|
||||
$aUserInfo = Db::name('chief_to_journal')->field('user_id')->where($aWhere)->find();
|
||||
if(!empty($aUserInfo)) {
|
||||
array_push($aRoles,'chief');
|
||||
}
|
||||
//期刊主编类型
|
||||
$aWhere = ['user_id' => $iUserId,'state' => 0];
|
||||
$aUserInfo = Db::name('board_to_journal')->field('user_id,type')->where($aWhere)->find();
|
||||
if(!empty($aUserInfo)) {
|
||||
array_push($aRoles,'board');
|
||||
$iType = isset($aUserInfo['type']) ? $aUserInfo['type'] : '-1';
|
||||
if($iType == 0){
|
||||
array_push($aRoles,'chief_editor');
|
||||
}
|
||||
if($iType == 1){
|
||||
array_push($aRoles,'deputy_editor');
|
||||
}
|
||||
if($iType == 2){
|
||||
array_push($aRoles,'editor_board');
|
||||
}
|
||||
}
|
||||
|
||||
//期刊主编类型
|
||||
$aWhere = ['user_id' => $iUserId,'uts_state' => 0];
|
||||
$aUserInfo = Db::name('user_to_special')->field('user_id')->where($aWhere)->find();
|
||||
if (!empty($aUserInfo)) {
|
||||
array_push($aRoles,'special');
|
||||
}
|
||||
return $aRoles;
|
||||
}
|
||||
/**
|
||||
* 获取我的稿件
|
||||
*/
|
||||
public function getManuscript($aParam = []){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//获取用户ID
|
||||
$iUserId= empty($aParam['user_id']) ? '' : $aParam['user_id'];
|
||||
//获取状态
|
||||
$iState = isset($aParam['state']) ? $aParam['state'] : -2;
|
||||
//获取微信登录openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : $aParam['openid'];
|
||||
if(empty($sOpenId) && empty($iUserId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your login account']);
|
||||
}
|
||||
//标题
|
||||
$sTitle = empty($aParam['title']) ? '': $aParam['title'];
|
||||
//获取用户信息
|
||||
$aParam['is_select_role'] = 2;
|
||||
$aUser = json_decode($this->getUser($aParam),true);
|
||||
$aUser = empty($aUser['data']) ? [] : $aUser['data'];
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'No user information found']);
|
||||
}
|
||||
|
||||
//获取分页相关参数
|
||||
$iSize = empty($aParam['size']) ? 15 : $aParam['size'];//每页显示条数
|
||||
$iPage = empty($aParam['page']) ? 1 : $aParam['page'];// 当前页码
|
||||
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
//获取数量
|
||||
$aWhere = ['user_id' => $iUserId,'accept_sn' => ['not like','Draft%']];
|
||||
$aWhere['state'] = ['<>',-1];
|
||||
if($iState != -2 && $iState != -1){
|
||||
$aWhere['state'] = $iState;
|
||||
}
|
||||
if($iState == -2){
|
||||
$aWhere['state'] = ['<>',-1];
|
||||
}
|
||||
if(!empty($sTitle)){
|
||||
$aWhere['title'] =['like','%'.trim($sTitle).'%'];
|
||||
}
|
||||
$iCount = Db::name('article')->where($aWhere)->count();
|
||||
if(empty($iCount)){
|
||||
return json_encode(['status' => 1,'msg' => 'Article not found','data' => ['total' => 0,'lists' => []]]);
|
||||
}
|
||||
|
||||
//判断页数是否超过最大分页限制
|
||||
$iPageNum = ceil($iCount/$iSize);
|
||||
if($iPage > $iPageNum){
|
||||
return json_encode(['status' => 1,'msg' => 'The number of pages has exceeded the limit, maximum page number:'.$iPageNum,'data' => ['total' => $iCount,'lists' => []]]);
|
||||
}
|
||||
|
||||
//查询详细数据
|
||||
$sField = 'article_id,journal_id,accept_sn,title,type,abstrart,ctime,state';
|
||||
$sOrder = 'article_id desc';
|
||||
$aArticle = Db::name('article')
|
||||
->field($sField)
|
||||
->where($aWhere)
|
||||
->page($iPage, $iSize)
|
||||
->order($sOrder)
|
||||
->select();
|
||||
if(empty($aArticle)){
|
||||
return json_encode(['status' => 1,'msg' => 'Data is empty','data' => ['total' => 0,'lists' => []]]);
|
||||
}
|
||||
//获取期刊
|
||||
$aJournalId = array_unique(array_column($aArticle, 'journal_id'));
|
||||
$aWhere = ['journal_id' => ['in',$aJournalId],'state' => 0];
|
||||
$aJournal = DB::name('journal')->where($aWhere)->column('journal_id,title');
|
||||
//数据处理
|
||||
foreach ($aArticle as $key => $value) {
|
||||
$aArticle[$key]['type_name'] = translateType($value['type']);
|
||||
$aArticle[$key]['journal_title'] = empty($aJournal[$value['journal_id']]) ? '' : $aJournal[$value['journal_id']];
|
||||
$aArticle[$key]['ctime'] = empty($value['ctime']) ? '' : date('Y-m-d',$value['ctime']);
|
||||
}
|
||||
return json_encode(['status' => 1,'msg' => 'success','data' => ['total' => $iCount,'lists' => $aArticle]]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的消息
|
||||
*/
|
||||
public function getMessagesLists($aParam = []){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
|
||||
//获取用户ID
|
||||
$iUserId= empty($aParam['user_id']) ? '' : $aParam['user_id'];
|
||||
//获取微信登录openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : $aParam['openid'];
|
||||
if(empty($sOpenId) && empty($iUserId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your login account']);
|
||||
}
|
||||
//标题
|
||||
$sTitle = empty($aParam['title']) ? '': $aParam['title'];
|
||||
|
||||
//状态
|
||||
$iIsRead = empty($aParam['is_read']) ? -1 : $aParam['is_read'];
|
||||
|
||||
//获取用户信息
|
||||
$aParam['is_select_role'] = 2;
|
||||
$aUser = json_decode($this->getUser($aParam),true);
|
||||
$aUser = empty($aUser['data']) ? [] : $aUser['data'];
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'No user information found']);
|
||||
}
|
||||
|
||||
//获取分页相关参数
|
||||
$iSize = empty($aParam['size']) ? 15 : $aParam['size'];//每页显示条数
|
||||
$iPage = empty($aParam['page']) ? 1 : $aParam['page'];// 当前页码
|
||||
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
//获取数量
|
||||
$aWhere = ['user_id' => $iUserId];
|
||||
if(!empty($sTitle)){
|
||||
$aWhere['title'] =['like','%'.trim($sTitle).'%'];
|
||||
}
|
||||
if(in_array($iIsRead, [1,2])){
|
||||
$aWhere['is_read'] = $iIsRead;
|
||||
}
|
||||
$iCount = Db::name('messages')->where($aWhere)->count();
|
||||
if(empty($iCount)){
|
||||
return json_encode(['status' => 1,'msg' => 'Message is empty','data' => ['total' => 0,'lists' => []]]);
|
||||
}
|
||||
|
||||
//判断页数是否超过最大分页限制
|
||||
$iPageNum = ceil($iCount/$iSize);
|
||||
if($iPage > $iPageNum){
|
||||
return json_encode(['status' => 1,'msg' => 'The number of pages has exceeded the limit, maximum page number:'.$iPageNum,'data' => ['total' => $iCount,'lists' => []]]);
|
||||
}
|
||||
|
||||
//查询详细数据
|
||||
$sField = 'message_id,article_id,type,title,content,is_read,create_time';
|
||||
$sOrder = 'create_time desc';
|
||||
$aMessages = Db::name('messages')
|
||||
->field($sField)
|
||||
->where($aWhere)
|
||||
->page($iPage, $iSize)
|
||||
->order($sOrder)
|
||||
->select();
|
||||
if(empty($aMessages)){
|
||||
return json_encode(['status' => 1,'msg' => 'Data is empty','data' => ['total' => 0,'lists' => []]]);
|
||||
}
|
||||
//获取期刊
|
||||
$aJournalId = array_unique(array_column($aMessages, 'journal_id'));
|
||||
$aWhere = ['journal_id' => ['in',$aJournalId],'state' => 0];
|
||||
$aJournal = DB::name('journal')->where($aWhere)->column('journal_id,title');
|
||||
//数据处理
|
||||
foreach ($aMessages as $key => $value) {
|
||||
$aMessages[$key]['create_time'] = empty($value['create_time']) ? '' : date('Y-m-d H:i:s',$value['create_time']);
|
||||
}
|
||||
return json_encode(['status' => 1,'msg' => 'success','data' => ['total' => $iCount,'lists' => $aMessages]]);
|
||||
}
|
||||
/**
|
||||
* 更改消息状态
|
||||
*/
|
||||
public function markRead($aParam = []){
|
||||
//获取参数
|
||||
$aParam = empty($aParam) ? $this->request->post() : $aParam;
|
||||
//获取消息ID
|
||||
$iMessageId= empty($aParam['message_id']) ? 0 : $aParam['message_id'];
|
||||
if(empty($iMessageId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please select a message']);
|
||||
}
|
||||
//获取用户ID
|
||||
$iUserId= empty($aParam['user_id']) ? '' : $aParam['user_id'];
|
||||
//获取微信登录openid
|
||||
$sOpenId= empty($aParam['openid']) ? '' : $aParam['openid'];
|
||||
if(empty($sOpenId) && empty($iUserId)){
|
||||
return json_encode(['status' => 2,'msg' => 'Please enter your login account']);
|
||||
}
|
||||
//获取用户信息
|
||||
$aParam['is_select_role'] = 2;
|
||||
$aUser = json_decode($this->getUser($aParam),true);
|
||||
$aUser = empty($aUser['data']) ? [] : $aUser['data'];
|
||||
if(empty($aUser)){
|
||||
return json_encode(['status' => 3,'msg' => 'No user information found']);
|
||||
}
|
||||
|
||||
|
||||
$iUserId = empty($aUser['user_id']) ? 0 : $aUser['user_id'];
|
||||
//获取未读数据
|
||||
$aWhere = ['user_id' => $iUserId,'is_read' => 2];
|
||||
if($iMessageId != -1){
|
||||
$aWhere['message_id'] = ['in',$iMessageId];
|
||||
}
|
||||
$aMessagesId = Db::name('messages')->where($aWhere)->column('message_id');
|
||||
if(empty($aMessagesId)){
|
||||
return json_encode(['status' => 4,'msg' => 'Message is empty']);
|
||||
}
|
||||
//更新为已读
|
||||
$aWhere = ['is_read' => 2,'message_id' => ['in',$aMessagesId]];
|
||||
$aUpdate = ['is_read' => 1,'update_time' => time(),'update_user_id' => $iUserId];
|
||||
$result = Db::name('messages')->where($aWhere)->limit(count($aMessagesId))->update($aUpdate);
|
||||
if($result === false){
|
||||
return json_encode(['status' => 5,'msg' => 'Marking failed']);
|
||||
}
|
||||
return json_encode(['status' => 1,'msg' => 'Marking successful']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user