205 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			205 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | likeshop开源商城系统
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | 欢迎阅读学习系统程序代码,建议反馈是我们前进的动力
 | |||
|  | // | gitee下载:https://gitee.com/likeshop_gitee
 | |||
|  | // | github下载:https://github.com/likeshop-github
 | |||
|  | // | 访问官网:https://www.likeshop.cn
 | |||
|  | // | 访问社区:https://home.likeshop.cn
 | |||
|  | // | 访问手册:http://doc.likeshop.cn
 | |||
|  | // | 微信公众号:likeshop技术社区
 | |||
|  | // | likeshop系列产品在gitee、github等公开渠道开源版本可免费商用,未经许可不能去除前后端官方版权标识
 | |||
|  | // |  likeshop系列产品收费版本务必购买商业授权,购买去版权授权后,方可去除前后端官方版权标识
 | |||
|  | // | 禁止对系统程序代码以任何目的,任何形式的再发布
 | |||
|  | // | likeshop团队版权所有并拥有最终解释权
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | // | author: likeshop.cn.team
 | |||
|  | // +----------------------------------------------------------------------
 | |||
|  | namespace app\admin\logic; | |||
|  | 
 | |||
|  | 
 | |||
|  | use app\common\enum\NoticeEnum; | |||
|  | use app\common\model\Notice; | |||
|  | use app\common\model\NoticeSetting; | |||
|  | use app\common\basics\Logic; | |||
|  | use app\common\model\user\User; | |||
|  | use think\Db; | |||
|  | 
 | |||
|  | /** | |||
|  |  * 通知设置逻辑 | |||
|  |  * Class NoticeSettingLogic | |||
|  |  * @package app\admin\logic | |||
|  |  */ | |||
|  | class NoticeSettingLogic extends Logic | |||
|  | { | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * Notes: 列表 | |||
|  |      * @param $type | |||
|  |      * @author 段誉(2021/4/26 16:18) | |||
|  |      * @return array | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      * @throws \think\exception\DbException | |||
|  |      */ | |||
|  |     public static function lists($type) | |||
|  |     { | |||
|  |         $count = NoticeSetting::where('type', $type)->count(); | |||
|  |         $lists = NoticeSetting::where('type', $type)->select(); | |||
|  |         return ['lists' => $lists, 'count' => $count]; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * Notes: 设置通知消息 | |||
|  |      * @param $post | |||
|  |      * @author 段誉(2021/4/26 16:18) | |||
|  |      * @return bool | |||
|  |      * @throws \think\Exception | |||
|  |      * @throws \think\exception\PDOException | |||
|  |      */ | |||
|  |     public static function set($post) | |||
|  |     { | |||
|  |         switch ($post['type']) { | |||
|  |             case 'system': | |||
|  |                 $setting = [ | |||
|  |                     'title' => $post['title'], | |||
|  |                     'content' => $post['content'], | |||
|  |                     'is_push' => $post['is_push'], | |||
|  |                     'status' => $post['status'], | |||
|  |                 ]; | |||
|  |                 break; | |||
|  |             case 'sms': | |||
|  |                 $setting = [ | |||
|  |                     'template_code' => $post['template_code'], | |||
|  |                     'content' => $post['content'], | |||
|  |                     'status' => $post['status'], | |||
|  |                 ]; | |||
|  |                 break; | |||
|  |             case 'oa': | |||
|  |                 $setting = [ | |||
|  |                     'name'     => $post['name'], | |||
|  |                     'first'    => $post['first'], | |||
|  |                     'template_sn' => $post['template_sn'], | |||
|  |                     'template_id' => $post['template_id'], | |||
|  |                     'remark'   => $post['remark'], | |||
|  |                     'status'   => $post['status'], | |||
|  |                     'tpl'      => self::formatTplData($post) | |||
|  |                 ]; | |||
|  |                 break; | |||
|  |             case 'mnp': | |||
|  |                 $setting = [ | |||
|  |                     'name'     => $post['name'], | |||
|  |                     'template_sn' => $post['template_sn'], | |||
|  |                     'template_id' => $post['template_id'], | |||
|  |                     'status' => $post['status'], | |||
|  |                     'tpl'   => self::formatTplData($post), | |||
|  |                 ]; | |||
|  |                 break; | |||
|  |             default: | |||
|  |                 $setting = []; | |||
|  |         } | |||
|  | 
 | |||
|  |         NoticeSetting::where('id', $post['id']) | |||
|  |             ->update([ | |||
|  |                 $post['type'].'_notice' => json_encode($setting, JSON_UNESCAPED_UNICODE) | |||
|  |             ]); | |||
|  | 
 | |||
|  |         return true; | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * Notes: 详情 | |||
|  |      * @param $id | |||
|  |      * @param $type | |||
|  |      * @author 段誉(2021/6/4 15:01) | |||
|  |      * @return array|\think\Model|null | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\DbException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      */ | |||
|  |     public static function info($id, $type) | |||
|  |     { | |||
|  |         return NoticeSetting::where('id', $id)->find(); | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * Notes: 格式化模板数据 | |||
|  |      * @param $post | |||
|  |      * @author 段誉(2021/4/26 14:55) | |||
|  |      * @return array | |||
|  |      */ | |||
|  |     public static function formatTplData($post) | |||
|  |     { | |||
|  |         foreach ($post as &$value) { | |||
|  |             if (is_array($value)) { | |||
|  |                 $value = array_values($value); | |||
|  |             } | |||
|  |         } | |||
|  |         return form_to_linear($post); | |||
|  |     } | |||
|  | 
 | |||
|  | 
 | |||
|  |     /** | |||
|  |      * Notes: 通知记录 | |||
|  |      * @param $get | |||
|  |      * @author 段誉(2021/6/4 15:21) | |||
|  |      * @return array | |||
|  |      * @throws \think\db\exception\DataNotFoundException | |||
|  |      * @throws \think\db\exception\DbException | |||
|  |      * @throws \think\db\exception\ModelNotFoundException | |||
|  |      */ | |||
|  |     public static function record($get) | |||
|  |     { | |||
|  |         $where = [ | |||
|  |             ['send_type', '=', $get['send_type']] | |||
|  |         ]; | |||
|  | 
 | |||
|  |         if(isset($get['content']) && !empty(trim($get['content']))) { | |||
|  |             $where[] = ['content', 'like', '%' . trim($get['content']) . '%']; | |||
|  |         } | |||
|  |         if(isset($get['create_time']) && !empty(trim($get['create_time']))) { | |||
|  |             $createTimeArr = explode('#', $get['create_time']); | |||
|  |             $start_time = strtotime(trim($createTimeArr[0])); | |||
|  |             $end_time = strtotime(trim($createTimeArr[1])); | |||
|  |             $where[] = ['create_time', '>=', $start_time]; | |||
|  |             $where[] = ['create_time', '<=', $end_time]; | |||
|  |         } | |||
|  | 
 | |||
|  |         $scene = NoticeSetting::where(['id'=>$get['id']])->value('scene'); | |||
|  |         $where[] = ['scene', '=', $scene]; | |||
|  | 
 | |||
|  |         $lists = Notice::where($where) | |||
|  |             ->order('id desc') | |||
|  |             ->paginate([ | |||
|  |                 'list_rows'=> $get['limit'], | |||
|  |                 'page'=> $get['page'] | |||
|  |             ]); | |||
|  | 
 | |||
|  |         foreach($lists as &$item) { | |||
|  |             switch ($item['receive_type']) { | |||
|  |                 case NoticeEnum::NOTICE_USER: | |||
|  |                     $user = User::find($item['user_id']); | |||
|  |                     $item['user_info'] = empty($user) ? '' : $user; | |||
|  |                     break; | |||
|  |                 case NoticeEnum::NOTICE_PLATFORM: | |||
|  |                     $item['user_info'] = '平台'; | |||
|  |                     break; | |||
|  |                 case NoticeEnum::NOTICE_OTHER: | |||
|  |                     $item['user_info'] = '游客'; | |||
|  |                     break; | |||
|  |                 case NoticeEnum::NOTICE_SHOP: | |||
|  |                     $item['user_info'] = '商家'; | |||
|  |                     break; | |||
|  |                 default: | |||
|  |                     $item['user_info'] = '未知'; | |||
|  |             } | |||
|  |         } | |||
|  |         return ['count' => $lists->total(), 'lists' => $lists->getCollection()]; | |||
|  |     } | |||
|  | } |