async def update_auto_replay(self, **kwargs): state = kwargs.get('id') if not state: return { 'status': False, 'msg': '数据入参验证失败', "code": StatusCode.params_error.value } try: row = AuthReplyModel.by_id(kwargs.get('id')) for k, v in kwargs.items(): if k not in ['updateTime', 'createTime']: setattr(row, k, v) row.updateTime = datetime.now() self.db.commit() return { 'status': True, 'msg': '更新成功', "code": StatusCode.success.value } except Exception as e: logger.error(f"apply update Error: {str(e)}") self.db.rollback() return { 'status': False, 'msg': '更新失败', "code": StatusCode.db_error.value }
async def add_auto_replay(self, **kwargs): keys = ['EventKey', 'EventType', 'ApplyType', 'MsgType', 'EventValue'] state, msg = validate(keys, kwargs) if not state: return { 'status': False, 'msg': '数据入参验证失败', "code": StatusCode.params_error.value } try: apply = AuthReplyModel(EventKey=kwargs.get('EventKey').strip(), EventType=kwargs.get('EventType').strip(), ApplyType=kwargs.get('ApplyType').strip(), MsgType=kwargs.get('MsgType').strip(), EventValue=kwargs.get('EventValue').strip()) self.db.add(apply) self.db.commit() return { 'status': True, 'msg': '添加成功', "code": StatusCode.success.value } except Exception as e: logger.error(f"apply insert Error: {str(e)}") self.db.rollback() return { 'status': False, 'msg': '添加失败', "code": StatusCode.db_error.value }
async def get_auto_replay(self, page, page_size): rows = AuthReplyModel.paginate(page, page_size) return { "status": True, "code": StatusCode.success.value, "msg": "获取成功", "data": to_json(rows) }
async def robot_ctrl(self, xml): msg_type = xml.get('MsgType') if msg_type == 'text': content = xml.get('Content') row = AuthReplyModel.get_one(content, 'TEXT', msg_type) if row: return await replay_msg(row, xml) else: return await text_apply(xml, "很抱歉, 没有找到您想要的信息") elif msg_type == 'event': event = xml.get('Event') if event == 'subscribe': return await text_apply(xml, "感谢您关注本平台") elif event == 'unsubscribe': return await text_apply(xml, "期待您的再次关注") else: row = AuthReplyModel.get_one(xml.get('EventKey'), event, msg_type) if row: return await replay_msg(row, xml) else: return await text_apply(xml, "很抱歉, 没有找到您想要的信息") else: return await text_apply(xml, "很抱歉, 该公众号暂不支持此项内容 ")
async def delete_auto_replay(self, _id): row = AuthReplyModel.by_id(_id) if row: try: self.db.delete(row) self.db.commit() return { 'status': True, 'msg': '删除成功', "code": StatusCode.success.value } except Exception as e: self.db.rollback() logger.error(f"news delete Error: {str(e)}") return { 'status': False, 'msg': '删除失败', "code": StatusCode.db_error.value } return { 'status': False, 'msg': '未找到该配置', "code": StatusCode.not_found_error.value }